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

如题所述

#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;
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答