C 箱子排序

2021-09-04 13:22:32 字數 1010 閱讀 3220

把每個箱子用乙個鍊錶實現。在進行節點分配之前,每個箱子都是空的。

1.從與排序鍊錶的頭部開始,逐個刪除節點,並把它放到合適的箱子鍊錶的頭部

2.收集並連線每個箱子中的節點,產生有序的鍊錶

第一種實現:

只使用乙個箱子陣列

//range 是分數的範圍

void

binsort

(chain

& x,

int range)

//從箱子中收集各元素(從後向前收集)

for(

int j = range;j >=

0;j--)}

delete

bin;

}

第二種實現

直接寫成chain的成員函式,使用兩個箱子陣列,乙個指向頭,乙個指向尾。

template

<

class

t>

void chain

::binsort

(int range)

//把節點分配到各個箱子中

for(

; first;first = first.link)

//新增到箱子中

else

//箱子為空

bottom[b]

= top[b]

= first;

}//收集各箱子中的元素

chainnode

*y =0;

//暫存箱子的頂部指標

for(b=

0;b<=range;b++

)else

//第乙個非空的箱子

first = bottomo[b]

; y = top[b];}

}if(y) y.link =0;

delete

top;

delete

bottom;

}

C 箱子排序

把每個箱子用乙個鍊錶實現。在進行節點分配之前,每個箱子都是空的。1.從與排序鍊錶的頭部開始,逐個刪除節點,並把它放到合適的箱子鍊錶的頭部 2.收集並連線每個箱子中的節點,產生有序的鍊錶第一種實現 只使用乙個箱子陣列 range 是分數的範圍 void binsort chain x,int rang...

經典演算法 箱子排序

include include include typedef struct studentstu stu student 40 int main else if student j number bottom number else head p for c 0 cname,head number...

演算法複習 箱子排序

例子 在乙個鍊錶中,每個節點包含乙個名字和分數,然後需要按照分數來進行排序然後進行輸出,這裡就可以用到箱子排序 首先得到最大數和最小數之間的數目個數 maxnum minnum 然後建立乙個陣列 鍊錶 指標來分別儲存這幾個數的內容 比如 分數為0的有 張三,李四,王五 分數為1的有 賀6 分數為2的...