用冒泡排序和简单选择排序如果数据量太大是很耗时的。
可以用一些快速的排序方法。
参考
十大经典排序算法(动图演示) - 一像素 - 博客园 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序: https://www.cnblogs.com/onepixel/articles/7674659.html
他这个足够大也就是万级别,就是排序占耗时的主要部分
你就正常写就行
代码如下:
#include <iostream>
#include <Windows.h>
#include <time.h>
using namespace std;
#define NN 10000
//冒泡排序
void bubble_sort(int a[],int n)
{
int i,j,t;
for (i=0;i<n-1;i++)
{
for (j=0;j<n-1-i;j++)
{
if(a[j] > a[j+1]) //从小到大,升序
{
t = a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
//选择排序,升序
void select_sort(int a[],int n)
{
int i,j;
int minindex,tmp;
for (i=0;i<n-1;i++)
{
minindex = i;
//找出第i小的数所在的位置
for(j=i+1;j<n;j++)
{
if(a[j] < a[minindex])
minindex = j;
}
//将第i小的数放在第i个位置
if (i != minindex)
{
tmp = a[i];
a[i] = a[minindex];
a[minindex] = tmp;
}
}
}
int main()
{
int a[NN],b[NN];
int i;
DWORD time_start, time_end;
srand((int)time(0));
for(i=0;i<10000;i++)
{
a[i] = rand()%10000; //生成0-9999之间的随机数
b[i] = a[i];
}
//
/* 获取开始时间 */
time_start = GetTickCount(); //从操作系统启动经过的毫秒数
bubble_sort(a,NN);
/* 获取开始时间 */
time_end = GetTickCount(); //从操作系统启动经过的毫秒数
cout << "冒泡排序时间:" << time_end - time_start << endl;
/* 获取开始时间 */
time_start = GetTickCount(); //从操作系统启动经过的毫秒数
select_sort(b,NN);
/* 获取开始时间 */
time_end = GetTickCount(); //从操作系统启动经过的毫秒数
cout << "选择排序时间:" << time_end - time_start << endl;
return 0;
}