基數排序的原理是:假設所有要排序的數字位數為d位,不足的數字高位補0,從第一位開始,以該位為基準對陣列進行排序(意思是將所有的數中的第1位提取出來,並按照大小進行排序,每一位所對應的陣列元素也相應的改變次序),在排序好之後在選取第二位,以第二位為基準進行排序,一次類推,直到按照d位排序之後,陣列的排序完成。
由於基數排序為穩定演算法,所以在對每一位進行排序時,也應該選取穩定的排序演算法進行排序。本**中選取了演算法時間複雜度並不是很好的排序演算法——插入排序,但是該排序演算法是穩定的。具體**如下:
修改:此處的插入排序應該改為計數排序,插入排序時間複雜度太高。
//基數排序,所選擇的穩定的排序演算法為計數排序。
#includeusing namespace std;
//使用插入排序作為穩定的排序演算法時會導致演算法時間複雜度超出線性時間。
//******************
//******************
//*******************
void insert_sort(int a,int b,int length)
for(j=length-1;j>=0;j--)
}//**********
//***********
//**********
void divide(int a,int b,int d,int length)
;for(i=0;ifor(i=0;ib[i]=c[i]%10;}}
void radixsort(int a,int b,int d,int length)
}int main()
cout
for(i=0;i<10;i++)
cout<}
演算法導論 第八章 線性時間排序
def 之前所有的排序演算法中,各元素的次序依賴於它們之間的比較,我們把這類排序演算法稱為比較排序演算法。8.1.排序演算法的下界 def 決策樹是一棵二叉樹,它可以表示在給定輸入規模情況下,某一特定排序演算法對所有元素的比較操作。即將所有比較後的次序描述為一條到達葉子節點的路徑,而這個路徑唯一,葉...
工程導論第八章
第八章主要講述了工程師的表達與溝通能力和撰寫 的要求與方法。工程師要有良好的書面表達能力與交流溝通能力,還要學會如何撰寫 和各種實驗及實驗報告。口語表達及書面表達能力是工程師必須具備的最基本的職業能力,人們需要在學習和工作階段反覆練習不斷提公升,要想提公升口語表達能力,需要多參加學術研討交流會議,要...
第八章 排序演算法總結
第八章 排序 一 插入類排序 1 直接插入排序 void insertsort int r,int n t next null 排序函式 void sort lnode h p1 p next p next pre next pre next p p p1 2 折半插入排序 折半插入排序 void ...