C語言實現基數排序 基於鏈佇列實現

2021-10-09 11:09:56 字數 2525 閱讀 9755

專案完整**

執行效果圖

//定義鏈結構

typedef

struct linknode linknode;

//定義鏈佇列

typedef

struct

linkqueue;

//初始化帶頭結點的鏈式佇列

void

initqueue

(linkqueue &q)

//初始化帶頭結點的鏈式佇列

void

initqueue

(linkqueue &q)

}

//帶頭結點的鏈式隊列入隊操作

void

enqueue

(linkqueue &q,

int x)

//帶頭結點的鏈式佇列出隊操作

bool dequeue

(linkqueue &q,

int&x)

//取各個位的值

intgetnum

(int a,

int i)

return n;

}

//檢索表中最大值的位數

inthowmany

(int a,

int len)

if(index < temp)

index = temp;

}return index;

}

//基數排序

void

basesort

(int a[

], linkqueue q,

int index,

int len)

for(

int j =

9, p =

0; j >=

0&& p < len;

--j)}}

}

//基數排序(穩定的)

#include

#include

#include

//定義鏈結構

typedef

struct linknode linknode;

//定義鏈佇列

typedef

struct

linkqueue;

//初始化帶頭結點的鏈式佇列

void

initqueue

(linkqueue &q)

//判斷帶頭結點的鏈式佇列是否為空

bool isempty

(linkqueue q)

//帶頭結點的鏈式隊列入隊操作

void

enqueue

(linkqueue &q,

int x)

//帶頭結點的鏈式佇列出隊操作

bool dequeue

(linkqueue &q,

int&x)

//取各個位的值

intgetnum

(int a,

int i)

return n;

}//檢索表中最大值的位數

inthowmany

(int a,

int len)

if(index < temp)

index = temp;

}return index;

}//基數排序

void

basesort

(int a[

], linkqueue q,

int index,

int len)

for(

int j =

9, p =

0; j >=

0&& p < len;

--j)}}

}int

main()

int a=

;int len =

sizeof

(a)/

sizeof

(int);

//檢索表中最大值的位數

int index =

howmany

(a, len)

;//基數排序

basesort

(a, q, index, len)

;//將排序後的結果輸出

printf

("基數排序的結果為:");

基於佇列的基數排序(使用C 實現)

include include includeusing namespace std int main queueque 10 int m 0,max numbers 0 求出陣列中的最大元素 for int i 1 i 11 i 求出陣列中元素最多有多少位 即最大值max有多少位 儲存在m當中 w...

基數排序 佇列實現

基數排序是一種不需要比較就能實現排序的演算法思維,主要步驟為分配和收集的過程,重複這個過程於最大數的位數後,排序結束。以下是完全以佇列模擬桶的分配收集過程。標頭檔案 單鏈表部分 typedef int elemtype typedef struct lnode lnode,linklist int ...

排序 8 之基數排序的C語言實現

基數排序 radix sorting 是一種借助多關鍵字排序的思想對單邏輯關鍵字進行關係的方法。基數排序不需要進行記錄關鍵字間的比較。主要分為兩個過程 1 分配,先從個位開始,根據位值 0 9 分別放到0 9號桶中 比如53,個位為3,則放入3號桶中 2 收集,再將放置在0 9號桶中的資料按順序放到...