C 箱子排序

2022-05-10 13:35:01 字數 821 閱讀 7345

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

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

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

第一種實現:

只使用乙個箱子陣列

//range 是分數的範圍

void binsort(chain& x,int range)

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

for (int j = range;j >= 0;j--)

}delete bin;

}

第二種實現

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

template 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的...