开发者社区> 问答> 正文

要求写二个函数,分别用选择法和冒泡法对数据按由大到小的顺序排序,在主函数中输入

要求写二个函数,分别用选择法和冒泡法对数据按由大到小的顺序排序,在主函数中输入

展开
收起
知与谁同 2018-07-22 15:55:08 1883 0
1 条回答
写回答
取消 提交回答
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
    #include <iostream>
    #include <ctime>

    #define N 10  //预定义数组长度,可调整
    using namespace std;

    void Swap(int &a, int&b)//对a,b两数进行交换
    {
        int c=a;
        a=b;
        b=c;
    }

    void BubbleSort(int a[], int n)//对数组a[]进行冒泡排序
    //数组元素个数为n
    {
        int i, j;
        for (j=0; j< n;j++)
            for (i=j+1;i<n;i++)
            {
                if(a[i]>a[j])
                {
                   Swap(a[i],a[j]);
                }
            }
    }
     
    void SelectSort(int r[] , int length)/*对记录数组r做简单选择排序
    //length为待排序数组元素个数*/
    {
        int k,i,j;
        for (i=0;i<length-1;++i)//n-1趟排序
        {
            k=i;
            for (j=i+1;j<length;++j)
                if (r[j]>r[k])
                    k=j;
            if (k!=i)//若无序区第一个元素不是无序区中最小元素,则进行交换
            {   
                Swap(r[k],r[i]);
            }
        }
    }


    int main(){    
        int i,k=0;
        int list[N];
        int ali[N];

        srand((unsigned)time(NULL));//初始化随机数种子    
        while(k!=N){//循环输入最多N个整数
         //ctrl+z随时结束循环,方便调试    
          list[k]=rand()%100; //用随机数填充数组,方便调试
          //cin>>list[k]; //手工输入数组元素
          ali[k]=list[k];//复制数组,下面分别排序用
         cout<<list[k]<<" ";  //调试用     
         ++k;  //元素个数
        }  
        cout<<endl;

        SelectSort(list,k);//排序    
        BubbleSort(ali,k);
        cout<<"SelectSort: " <<endl;
        for(i=0;i!=k;++i){//输出      
         cout<<list[i]<<" ";
        }
        cout<<endl;
        cout<<"BubbleSort: " <<endl;
        for(i=0;i!=k;++i){//输出      
          cout<<ali[i]<<" ";
        }
       
        return 0;
    }
    2019-07-17 22:50:12
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载