您的位置:首页 > 编程语言 > C语言/C++

算法导论第三版 练手程序C++(第二章)(1)

2014-11-16 20:40 197 查看

实在闲的蛋疼,大神们不要喷我~

第二章

插入排序

伪代码:
INSERTION-SORT(A)
for j = 2 to A.length
key = A[j]
// Insert A[j] into the sorted sequence A[1..j-1].
i = j-1
while i>0 and A[i]>key
A[i+1] = A[i]
i = i-1
A[i+1] = key


对应C++ 
#include <stdlib.h>
#include <time.h>
#include <iostream>
#define PAI_LENGTH 10000
using namespace std;

void insertion_sort(int A[],int length) {
int key=0,i=0;
for (int j=1;j<length;j++) {
key = A[j];
i = j-1;
while(i>-1&&A[i]>key) {
A[i+1] = A[i];
i = i-1;
}
A[i+1] = key;
}
}

void printAll(int A[],int length) {
for(int i=0;i<length;i++) {
cout<<A[i]<<endl;
}
}

int main() {
clock_t start,end;

/***生成随机数组,本例中有10000个数***/
int raw[PAI_LENGTH];
srand((unsigned)time(NULL));
for(int i=0;i<PAI_LENGTH;i++) {
raw[i] = rand()%10000+1;
}

start = clock();//开始计时

insertion_sort(raw,PAI_LENGTH);//排序

end = clock();//停止计时
cout<<"use"<<(end-start)<<"us"<<endl;
return 0;
}


最后结果是:
use 83643 us
即插入排序法在我的计算机上排序10000个随机数需要8万us=80ms=0.08s
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息