**:
#include #include // 假設元素最多有 maxdigit 個關鍵字, 基數全是同樣的 radix
#define maxdigit 4
#define radix 10
typedef int elementtype;
// 桶元素節點
typedef struct node *ptrtonode;
struct node
;// 桶頭節點
struct headnode
;typedef struct headnode bucket[radix];
// 預設次位 d = 1, 主位 d <= maxdigit
int getdigit(int x, int d)
return d;
}// 基數排序-次位優先
void lsdradixsort(elementtype a, int n)
for (i = 0; i < n; i++) // 將原始序列逆序存入初始鍊錶 list
// 下面開始排序
for (d = 1; d <= maxdigit; d++) // 對資料的每一位迴圈處理
}// 下面是收集的過程
list = null;
for (di = radix - 1; di >= 0; di--) // 將每個桶的元素順序收集入 list}}
// 將 list 倒入 a 並釋放空間
for (i = 0; i < n; i++)
}int main()
; lsdradixsort(a, 12);
for (int i = 0; i < 12; ++i)
return 0;
}
測試結果:
按 : 可以根據需要, 修改**中的 radix 值, 即修改基數.
c語言資料結構基數排序演算法
基數排序演算法的大概思想 首先建立乙個鍊錶用於儲存待排序陣列 arraynode鍊錶 建立乙個儲存頭結點的陣列 用來儲存分配好的節點 0 9 進行分配 即給group陣列進行賦值資料 首先進行分配的是 次關鍵字的操作 然後進行主關鍵字的操作 最高位 分別對分配好的陣列進行收集 將頭節點的指標返回值傳...
PTA資料結構習題(浙江大學)
感謝疫情期間pta開放免費練習,趁著這個機會補一下資料結構的代 include include include struct stud node struct stud node createlist struct stud node deletelist struct stud node head...
浙江大學 資料結構 堆的操作
題目 05 樹7 堆中的路徑 25分 將一系列給定數字插入乙個初始為空的小頂堆h。隨後對任意給定的下標i,列印從h i 到根結點的路徑。每組測試第1行包含2個正整數nn n和mm m 1000 le 1000 1 000 分別是插入元素的個數 以及需要列印的路徑條數。下一行給出區間 10000,10...