要求写二个函数,分别用选择法和冒泡法对数据按由大到小的顺序排序,在主函数中输入
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询