各种排序法的比较.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:22 大小:237KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

各种排序法的比较.ppt

各种排序法的比较.ppt

预览

免费试读已结束,剩余 12 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

前面的排序技巧都是基於比較和移動欲排序的元素,而基數排序法(Radixsort)不做任何比較。若使用連結資料結構時,也不需移動元素。定義基本運算字元值:字元值:最後排序的結果如下:015,56,107,228,312,371,452,456,575,714,749,833演算法c[0]=0;for(i=1;i<l;i++){count[i]+=count[i–1];c[i]=count[i];}for(i=1;i<=r;i++){j=a[i]/factor%10;b[count[j]++]=a[i];}for(i=1;i<=r;i++)a[i]=b[i–1];factor/=10;for(i=0;i<10;i++){j=c[i]+l;v=c[i+l]+l–1;if(v>j&&factor>0)msd_sort(a,b,j,v,factor);}}=>時間複雜度分析基數排列的分類是穩定的情況所需的平均的時間複雜度均為O(nlogrm),r是所採用的數字系統基底,m是堆數。在某些情況下,所需的時間是O(n),所需的空間很大,需要(n*n),n為記錄數。程式範例-基數排序intorder([10])={75,23,98,44,57,12,29,64,38,82};printf(“\n<<Rpsort>>\n);printf(“Number:“)for(i=0;i<=10;i++)printf(“%d“,data[i]);puts(““);for(i=0;i<60,i++)printf(“-“);while(n<=10){for(i=0;i<10;i++){lst=((data[i]/n)%10)temp[lsd][order[lsd]]=data[i];order[lsd]++;}printf(“\nAccess:“);for(i=1;i<10;i++){for(j=0;j<order[i];j++){data[k]=temp[i][j];printf(“%d“,data[k]);k++;}order[i]=0;}n*=10;k=0;}puts(““);for(i=0;i<60;i++)printf(“-“);printf(“\nSorting:“);for(i=1;i<10;i++)printf(“%d“,data[i]);}外部排序法當資料量太大時,我們無法將資料一次全部放在主記憶體中做處理,又由於現今電腦的主記憶容量增加的速度遠低於儲存設備,所有大量的資料還是儲存於外部儲存裝置中。定義各種排序法的比較時間複雜度與穩定性平均時間:程式平均執行次數.最差狀況:程式最差執行次數.穩定度:相同的數值排序後順序是否和排序前順序相同.若'是'稱為穩定,若'不是'稱為不穩定.類別:分為2類內部排序適合於所有資料可以寫入記憶體中.外部排序適合於所有資料無法全部寫入記憶體中,需使用輔助記憶體。空間複雜度簡單性