快速排序 基數排序

2022-02-02 07:36:11 字數 1809 閱讀 9620

//

快速排序

#includevoid quicksort(int r,int low,int

high)

r[i]=pivot;

quicksort(r,low,i-1

); quicksort(r,j+1

,high);

}}int

main()

;

inti;

printf(

"原 :");

for(i=0;i<10;i++)

printf(

"%d

",a[i]);

printf(

"\n排序後:");

quicksort(a,

0,9);

for(i=0;i<10;i++)

printf(

"%d

",a[i]);

return0;

}//快速排序中用到遞迴,遞迴實質是乙個迴圈

/*while(條件) //條件=遞迴出口

*///

遞迴的思想是異級同構

基數排序

#include//

乾卦//

2014-5-3

//獲取數字的十位數

int get_ten(int

n)//

獲取數字的個位數

int get_single(int

n)int

main()

; //

儲存索引,相同的數字最大存10個

int ind_arr[10]=; //

每行的儲存長度

int r[10]=;

inti,j,index;

intk;

//按個位數排序

for(i=0;i<10;i++)

//我們看看按照個位數排序後的輸出

printf("

按照個位數排序:\n");

for(i=0;i<10;i++)

}printf("\n

");//遍歷,整個陣列然後從十位數最小的開始輸出

for(i=0;i<10;i++) //

遍歷10次}}

可以用圖表示上面的排序,跟前幾篇的桶排序有相似的地方:

最上層的是arr陣列的列索引,最左側是arr陣列的行索引,最右側的是每行儲存了多少個數,也就是ind_arr的值。

有黑色邊框的**裡面的值的x:xx ,x代表陣列r中的索引值,xx則是r[x]。

然後我們從頭開始按順序遍歷10次(說遍歷有點牽強,應該說遍歷arr陣列內值不為0的),

每次取十位數值與遍歷號相同的值輸出。

此方法效率巨低。

那麼我們可以考慮用空間換時間的方法。

//

遍歷,整個陣列然後從十位數最小的開始輸出

for(j=0;j<10;j++)

}

我們一開始就可以用到這10個佇列。很多書上有,不在此贅述。

基數排序比快速排序快

最近在關於演算法的書籍 本以為以前看過的演算法書都說快速排序是最好的排序演算法,也沒有想過,閒著無聊變寫了乙個關於基數排序的演算法簡單分析了一下應該時間複雜度比快速排序小,於是程式設計實現果然結果要比快速排序快,對兩者都 1000000個數排序快速排序一般要700多毫秒,基數排序一般要200毫秒,1...

排序 基數排序

基數排序 radix sort 是屬於 分配式排序 distribution sort 基數排序法又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些 桶 中,藉以達到排序的作用。排序思想 首先按照資料的最低位 個位 將資料分配到0 9...

排序 基數排序

1 基數排序 桶排序 介紹 1 基數排序 radix sort 屬於 分配式排序 distribution sort 又稱 桶子法 bucket sort 或bin sort,顧名思義,它是通過鍵值的各個位的值,將要排序的元素分配至某些 桶 中,達到排序的作用 2 基數排序法是屬於穩定性的排序,基數...