基於單鏈表實現的桶排序

2021-09-11 19:53:28 字數 600 閱讀 5217

1.問題描述:使用桶排序演算法對控制台輸入的數字進行排序

2. 桶排序涉及到幾個問題:

1.桶的大小,這裡我們可以根據輸入的元素的個數來確定桶的大小

2.怎麼確定當前元素進入哪乙個桶,這裡我們使用到的是通過乙個雜湊函式來進行計算

element為當前元素的值,length為桶的大小,max為陣列中最大元素的值

③因為輸入的資料是隨機的,所以有可能在乙個桶中分布著好幾個資料

所以我們可以使用動態的資料結構來儲存,考慮到插入的操作是比較頻繁的,所以這裡我們使用鍊錶來進行插入元素,並且在乙個桶中維持從小到大的順序

在一開始的時候我們掃瞄桶的元素,找到第乙個比當前需要插入的元素大或者相等的的元素,那麼將這個元素往前插入就可以了

了解了上面的問題就可以寫**了

public class listnode 

}

public class util 

}else if(p!=head && value > p.data)

}}}

[1, 9, 8, 6, 5, 3, 2]

[1, 2, 3, 5, 6, 8, 9]

排序之基於單鏈表插入排序

插入排序的具體方法在上文已經介紹過,此文不再贅述。對於陣列,可以使用索引來輕易操作上下元素,但是單鏈表則只能通過指向下一節點的元素來操作。因此,需要兩個指標firstoutoforder 指向第乙個無序元素的節點 和lastinorder 指向最後乙個有序元素的節點 首先,比較firstoutofo...

基於單鏈表實現的簡單通訊錄

include include include pragma warning disable 4996 解決vs報嚴重性 錯誤 typedef struct lnode linknode 建立通訊錄 lnode createlist lnode l r next null return l 新增聯絡...

資料結構 排序 基於單鏈表的簡單選擇排序

方法一 不進行任何斷鏈插入操作,找到目標節點之後,只是交換data值,這個思路很簡單,與簡單選擇排序的思路一摸一樣。程式設計注意事項 min不能標記最小值,應該要標記最小值對應的鍊錶節點 但是,再一次審題 在基於單鏈表表示的待排序關鍵字序列上進行簡單選擇排序,題目想要我們有斷鏈插入操作,而不是直接修...