【算法】选择排序和冒泡排序这两个算法,哪一个排序效率高?(C++源码)

时间:2022-10-18 07:23:28


【算法】选择排序和冒泡排序这两个算法,哪一个排序效率高?(C++源码)

一、设计提纲

请采用递归方式实现按升序排序的冒泡排序算法,设计测试用例以验证算法的准确性,并通过实验回答如下问题:选择排序和冒泡排序这两个算法,哪一个排序效率高?

二、要求

1、递归的方法;
2、升序排序;
3、冒泡排序;
4、设计测试用例以验证算法的准确性;
5、回答选择排序和冒泡排序这两个算法,哪一个排序效率高?
6、选择排序效率明显优于冒泡排序

三、设计思路

定义sort函数,sort函数是一个选择排序的函数,sort函数中包含三个参数变量,第一个变量是数组指针,第二个是数组的长度,第三个是记录排序次数,也在控制递归次数,在main函数中调用;

四、源代码(C++)

//请采用递归方式实现按升序排序的冒泡排序算法,设计测试用例以验证算法的准确性
#include<iostream>

using namespace std;

void change(int *x,int *y);
int min (int a[],int n);
void Sort(int a[], int n);

int main()
{
int i,n;
cout<<"请输入需要排序的数字个数:";
cin>>n;
int a[n];
cout<<"请输入数组:";
for(i=0;i<n;i++)
{
cin>>a[i];
}
Sort(a,n);
cout<<"输出冒泡排序后:";
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}

void change(int *x,int *y)
{
int t=*x;
*x=*y;
*y=t;
}

int min (int a[],int n)
{
int i=0,m=0;
int min=a[i];
for(i=0;i<n;i++)
{
if(min>a[i])
{
min=a[i];
m=i;
}
}
return m;
}

void Sort(int a[], int n)
{
int m;
if(n==1)return;
m=min(a,n);
change(&a[m],&a[0]);
Sort(a+1,n-1);
}