鴿巢排序Pigeonhole sort

2021-08-28 09:19:11 字數 675 閱讀 4171

原理類似桶排序,同樣需要乙個很大的鴿巢[桶排序裡管這個叫桶,名字無所謂了]

鴿巢其實就是陣列啦,陣列的索引位置就表示值,該索引位置的值表示出現次數,如果全部為1次或0次那就是桶排序

例如var pigeonhole = new int[100];

pigeonhole[0]的值表示0的出現次數...

pigeonhole[1]的值表示1的出現次數...

pigeonhole[2]的值表示2的出現次數...

/// 鴿巢排序

///

/// 待排陣列

/// 待排陣列中的最大數,如果可以指定的話

///

static int pogeon_sort(int unsorted, int maxnumber = 10)

return pogeonhole;

/** pogeonhole[10] = 4; 的含意是

* 在待排陣列中有4個10出現,同理其它*/}

static void main(string args)

;var sorted = pogeon_sort(x, 99);

for (int i = 0; i < sorted.length; i++)

}console.readline();

}

鴿巢排序 Pigeonhole sort

鴿巢排序,也被稱作基數分類,是一種 時間複雜度為 n 且在不可避免遍歷每乙個元素並且排序的情況下效率最好的一種 排序演算法.但它只有在差值 或者可被對映在差值 很小的範圍內的數值排序的情況下實用.當涉及到多個不相等的元素,且將這些元素放在同乙個 鴿巢 的時候,演算法的效率會有所降低.為了簡便和保持鴿...

演算法 鴿巢排序

鴿巢排序,名字很生動形象,其實就是把待排序的陣列中相同的元素扔到同乙個鴿巢。洛谷1177 排序 題目描述 將讀入的 n 個數從小到大排序後輸出。輸入格式 第 1 行為乙個正整數 n。第 2 行包含 n 個空格隔開的正整數 a i 為你需要進行排序的數,資料保證了a i 不超過10 9。輸出格式 將給...

鴿巢原理小結

最基礎的原理便是n 1的物體放到n個盒子裡,至少有乙個盒子放了兩個物體。poj 2356 有n個數,從中選出幾個數的和是n的倍數。不得不說數學是個神奇的東西,結論是任意的n個數,必然能找到連續的m個數之和是n的倍數。接下來簡單證明一下,組合數學書中,黑書都有介紹。sk表示a1 a2 ak,如果sk是...