《精编》c语言各种排序方法与所耗时间比较程序

include include include include include const int N1000;//数据量,用于检测算法质量 const int M1000;//执行次数 //冒泡排序(递增) void Bubblesortint r[],int n { int flag1;//flag为0停止排序 forint i1;ii;j-- ifr[j]0;i-- { tr[0]; r[0]r[i]; r[i]t; creatheapr,0,i-1; } return; } //二路归并 void mergeint r[],int r1[],int low,int mid,int high//进行二合一的函数 { int ilow,jmid1,klow; whileij; srandunsignedtimeNULL; fori0;iN;i { a[i]rand10000; } switchj { case1 { cout“冒泡法“; start clock; fori0;iM;i { kN-1; whilek1 { r[k]a[k]; k--; } Bubblesortr,N;//冒泡法 } finish clock; duration doublefinish - start/1000; printr,N; printf “f seconds\n“, duration ; }break; case2 { cout“快速排序法“; start clock; fori0;iM;i { kN-1; whilek1 { r[k]a[k]; k--; } quicksortr,0,N-1;//快速排序法 } finish clock; duration doublefinish - start/1000; printr,N; printf “f seconds\n“, duration ; }break; case3 { cout“堆排序法“; start clock; fori0;iM;i { kN-1; whilek1 { r[k]a[k]; k--; } heapsortr,N;//堆排序法 } finish clock; duration doublefinish - start/1000; printr,N; printf “f seconds\n“, duration ; }break; case4 { cout“二路并归法“; start clock; fori0;iM;i { kN-1; whilek1 { r[k]a[k]; k--; } mergesortr;//二路并归法 } finish clock; duration doublefinish - start/1000; printr,N; printf “f seconds\n“, duration ; }break; } }