驗證演算法(8)基數排序

2021-07-09 01:21:22 字數 1237 閱讀 1059

#include #include #include #define maxe 20         //線性表中最多元素個數

#define maxr 10 //基數的最大取值

#define maxd 8 //關鍵字位數的最大取值

typedef struct node

rectype;

void crealink(rectype *&p,char *a,int n);

void displink(rectype *p);

void radixsort(rectype *&p,int r,int d) //實現基數排序:*p為待排序序列鍊錶指標,r為基數,d為關鍵字位數

else

p=p->next; //取下乙個待排序的元素

}p=null; //重新用p來收集所有結點

for (j=0; jnext=head[j];

t=tail[j];}}

t->next=null; //最後乙個結點的next域置null

//以下的顯示並非必要

printf(" 按%d位排序\t",i);

displink(p);

}}void createlink(rectype *&p,char a[maxe][maxd],int n) //採用後插法產生鍊錶

else

}t->next=null;

}void displink(rectype *p) //輸出鍊錶

printf("\n");

}int main()

; for (i=0; i

a[i][j]='\0';

}createlink(p,a,n);

printf("\n");

printf(" 初始關鍵字\t"); //輸出初始關鍵字序列

displink(p);

radixsort(p,10,2);

printf(" 最終結果\t"); //輸出最終結果

演算法 8 基數排序

1.基數排序 1.2 include include define dbmsg fmt,args printf s s d fmt n file function line args intdump array int arr int len printf n return 0 int get po...

排序演算法8 基數排序

基數排序 基數排序的演算法思想 基數排序不同於前面的各種排序演算法,前面的排序演算法都是基於元素之間的比較好實現的,而基數排序則是利用分類進行排序的方法。演算法思想 基數排序是一種多關鍵字排序演算法。基數排序通過對所有元素根據關鍵字進行分類,然後按照關鍵字的順序將這些元素收集起來,通過這樣的方法完成...

基礎演算法 8 基數排序

基數排序 假設 如果要排序的專案是大範圍但小數字的整數,我們可以將計數排序 counting sort 思想與基數排序 radix sort 結合起來,以實現線性時間複雜度。在基數排序中,我們將每個專案排序為乙個 w 數字串 如果需要,我們填充小於w數字的前幾個零的整數 對於最低有效位 最右邊 到最...