分享程式代碼相關筆記
目前文章總數:157 篇
最後更新:2024年 12月 07日
1. 輸入一可比較陣列
2. 建立(最大值-最小值)配置空間
3. 遍歷該可比較陣列,塞入到對應的配置空間中++
4. 遍歷配置空間由小開始遍歷一筆筆取出
最後取出的結果即為由小至大排序
初始內有5個值
輸入一組數列 inputItem 求出 result
public void Execute()
{
List<int> inputItem = new() { 92, 17, 8, 159, 26, 39 };
var execute = new PigeonholeSort<int>();
execute.PigeonholeSorting(inputItem);
}
主要三個流程
1. 建立空間
2. 塞入值轉換對應的索引位置
3. 轉換由小到大取出值
public class PigeonholeSort<T> where T : IComparable
{
public List<int> PigeonholeSorting(List<int> items)
{
//1. 建立範圍空間
int min = items.Min();
int max = items.Max();
int range = max - min + 1;
int[] phole = new int[range];
//2. 塞入對應的值
for (int index = 0; index < items.Count(); index++)
phole[items[index] - min]++;
//3. 取出索引位置作為值的排序結果
for (int index = 0, innerIndex = 0; innerIndex < range; innerIndex++)
while (phole[innerIndex]-- > 0)
items[index++] = innerIndex + min;
return items;
}
}