[编程珠玑读书笔记]最好的快速排序与库函数中的排序函数比较

#include<iostream> #include<string.h> #include<stdio.h> #include<algorithm> using namespace std; const int MAX = 100000; void swap( int *data, int i, int j) { int temp = data[i]; data[i] = data[j]; data[j] = temp; } void InsertSort3( int *data, int n) { int i, j, temp; for( i = 1; i< n; i++) { temp = data[i]; for( j = i; data[j - 1] > temp&& j > 0; j--) data[j ] = data[j - 1]; data[j] = temp; } } void QuickSort3( int *data, int l ,int u) { int i, j; if ( u - l < 50) return; swap(data,l, rand() %( u - l ) + l); int temp; temp = data[l]; i = l; j = u + 1; while( true) { do i++; while( i <= u && data[i] < temp); do j--; while( data[j] > temp); if( i > j ) break; int t = data[i]; data[i] = data[j]; data[j] = t; } swap( data, l, j); QuickSort3(data, l , j -1); QuickSort3(data, j + 1 , u); } int main() { srand(5); int data[ MAX]; int dup_data[MAX]; const int denominator = MAX * 10; double BegTime, EndTime; for( int i = 0; i < MAX; i++) { data[i] = rand() % denominator; } memcpy( dup_data, data, MAX); BegTime = clock(); QuickSort3( data, 0, MAX - 1); InsertSort3( data, MAX); EndTime = clock(); printf("time of QucikSort3 && InsertSort test is : %g ms \n", (EndTime - BegTime ) / 1000); BegTime = clock(); sort( dup_data,dup_data + MAX - 1); EndTime = clock(); printf("time of sort test is : %g ms \n", (EndTime - BegTime ) / 1000); BegTime = clock(); QuickSort3( data, 0, MAX - 1); InsertSort3( data, MAX); EndTime = clock(); printf("time of QucikSort3 && InsertSort test is : %g ms \n", (EndTime - BegTime ) / 1000); BegTime = clock(); sort( dup_data,dup_data + MAX - 1); EndTime = clock(); printf("time of sort test is : %g ms \n", (EndTime - BegTime ) / 1000); return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值