[C/C++]_[对数组内的数字进行从小到大排序]
场景:
1.有时候需要把集合或数组里的数据排序后展现出来时.
2.由于有些数据结构处理需要先对数组进行排序才能进行时.
文件: test_sort.cpp
[cpp]
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <assert.h>
#include <vector>
#include <windows.h>
using namespace std;
void InsertSort(vector<int>& array,size_t length)
{
int key = 0;
for(size_t j=1;j<length;++j)
{
int i = j-1;
key = array[j];
while(i>=0 && array[i] > key)
{
array[i+1] = array[i];
--i;
}
array[i+1] = key;
}
}
bool cmp(int a,int b)
{
return a<b;
}
int main(int argc, char *argv[])
{
printf("Hello, world\n");
//RAND_MAX
srand(time(NULL));
const int kMaxNum = 100000;
vector<int> v1(kMaxNum,0);
for(int i=0;i<kMaxNum;++i)
{
v1[i] = rand()%100;
}
vector<int> v2(v1);
//这个在windows下是毫秒级别.
//1.使用库函数排序.
cout << CLOCKS_PER_SEC << endl;
double time=clock();
sort(v1.begin(),v1.end(),cmp);
double Inteval = clock()-time;
cout << "排序耗时 单位(毫秒): " << Inteval << endl;
//1.验证排序.
int pre = v1[0];
for(int i=0;i<kMaxNum;++i)
{
assert(v1[i] >= pre);
pre = v1[i];
}
//2.使用自己的排序算法.
size_t length = v2.size();
time=clock();
InsertSort(v2,length);
Inteval = clock()-time;
cout << "插入排序耗时 单位(毫秒): " << Inteval << endl;
pre = v1[0];
for(int i=0;i<kMaxNum;++i)
{
assert(v1[i] >= pre);
pre = v1[i];
}
return 0;
}
输出,执行了4次,可见插入排序的确不怎么地:
[plain]
Hello, world
1000
排序耗时 单位(毫秒): 36
插入排序耗时 单位(毫秒): 32114
Hello, world
1000
排序耗时 单位(毫秒): 38
插入排序耗时 单位(毫秒): 27737
Hello, world
1000
排序耗时 单位(毫秒): 37
插入排序耗时 单位(毫秒): 32807
Hello, world
1000
排序耗时 单位(毫秒): 44
插入排序耗时 单位(毫秒): 28157
补充:软件开发 , C++ ,