随机产生一个十万个随机数的数组,要进行比较的话,每次产生的数组应该是完全一样的。才有比较的价值。分别写好冒泡排序和插入排序两种算法的函数,并使用程序计时的工具进行计时,总的说来,他们的时间复杂度接近,插入排序的时间复杂度略好一点。
#include<iostream>
#include<iomanip>
#include<time.h>
using namespace std; //随机数函数头文件
void main()
{
void sort1(int *);//冒泡法函数
void sort2(int *);//快速排序法
int i;
int a[1000];
srand(time(0)); //调用随机数
for(i=0;i<1000;i++)
a[i]=1+rand()%1000; //随机数的使用方法
}
int q;
cout<<"1--冒泡法\n"<<"2--快速排序法\n";
cout<<"请选择:";
cin>>q;
cout<<"排序后的结果为:\n";
switch(q)
{
case 1:
sort1(a);
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
} //冒泡部分
for(i=0;i<1000;i++)
cout<<setw(5)<<a[i];//为了使输入的数据对齐
t++;
if(t%16==0) //每输出15个数换行
k=i; //把第一个数的下标赋给k
for(j=i+1;j<1000;j++)//比较出最小的(出了第一个数)
if (a[j]<a[k])
k=j; //把比第一个数小的数的下标依此赋给k
t=a[i];a[i]=a[k];a[k]=t;//把最小的数与第一个数交换
for(i=0;i<1000;i++)
{
cout<<setw(5)<<a[i];//为了使输入的数据对齐
m++;
if(t%16==0) //每输出15个数换行
cout<<endl;
m=1;
}
扩展资料:
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
参考资料来源:百度百科-冒泡排序