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不能標記最小值,應該要標記最小值對應的鍊錶節點 但是,再一次審題 在基於單鏈表表示的待排序關鍵字序列上進行簡單選擇排序,題目想要我們有斷鏈插入操作,而不是直接修...