下面是**,乙個收集和乙個分配
問題在於收集和分配的集合無法再次利用,望大佬疏通一下脈絡,太晚就先睡了,明天在想
#include
#include
#include
typedef
struct lnod lnod;
//分配方法
void
distrusort
(lnod *p,lnod *f[10]
,lnod *e[10]
,int x);}
;//收集方法
void
peioption
(lnod *p,lnod *f[10]
,lnod *e[10]
);};
free(&
*f);
//free(&
*e);//}
;int
main()
;int m=0;
//初始話需要排序的資料
for(i=
0; iint h=1;
//位數的標識
lnod *pi;
for(h=
1; h<=
3; h++);
pi=p;
while
(pi->next!=
null);
printf
("\n");
};};
*優化*
對於每次重複呼叫收集和分配集合不需要再重新申請空間
- 只需要在收集時,只需要把分配的頭指標初始化。
**for
(i=0
; i<
10; i++);
};- 最後在重複收集和分配時把f[
] e[
] 集合的指標的下乙個指標都置為空
** distrusort(&
*p,&
*f,&
*e,h)
;peioption(&
*p,&
*f,&
*e);
//把儲存資料結果再次清空
//這裡置為空,不需要在重新分配新的記憶體
for(i=
0; i<
10; i++
);
單鏈表實現基數排序
1 2 單鏈表實現基數排序3 45 介面標頭檔案 6 typedef int elementtype 78 ifndef list h 9 define list h 10 include 11 12struct node 13 typedef struct node ptrtonode 14typ...
單鏈表實現基數排序
基數排序是通過 分配 和 收集 過程來實現排序 1 假設有欲排資料序列如下所示 73 22 93 43 55 14 28 65 39 81 首先根據個位數的數值,在遍歷資料時將它們各自分配到編號0至9的桶 個位數值與桶號一一對應 中。分配結果 邏輯想象 如下圖所示 分配結束後。接下來將所有桶中所盛資...
基於單鏈表實現的桶排序
1.問題描述 使用桶排序演算法對控制台輸入的數字進行排序 2.桶排序涉及到幾個問題 1.桶的大小,這裡我們可以根據輸入的元素的個數來確定桶的大小 2.怎麼確定當前元素進入哪乙個桶,這裡我們使用到的是通過乙個雜湊函式來進行計算 element為當前元素的值,length為桶的大小,max為陣列中最大元...