所以我想到了一種新的排序算法,它可能很高效,但我對此不太確定。對索引進行排序效率高嗎
1)想象一下,我們有一個只有正數的數組。
2)我們通過數組並找到最大的數字n。
3)我們創建一個大小爲n + 1的新數組b。
4)我們遍歷未排序數組中的每個條目,並在我們正在查看的未排序數組的索引處增加第二個數組中的值。 (在僞代碼中,這意味着:b [a [i]] ++;而a [i]是我們目前正在查看的數字)
5)一旦我們完成了a中的每個元素,數組b在每個索引處存儲此索引的確切數量。 (例如:b [0] = 3表示我們在初始數組中有3個零點a)
6)我們遍歷整個數組b並跳過所有空字段並從中創建一個新的List或數組。
所以我可以想象,這個算法對於較小的數字可以非常快速有效,因爲最後我們必須通過整個數組b來構建排序的算法,這將會非常耗時。
如果我們例如有一個數組a = {1000,1},它仍然會檢查數組b中的1001個元素,或者它們是0,儘管我們在初始數組中只有2個元素。
儘管數量較小,但我們幾乎應該得到一個O(n)結果?我不太確定,這就是爲什麼我問你。也許我甚至錯過了一些非常重要的東西。
感謝您的幫助提前:)
它被稱爲[計數排序](https://en.wikipedia.org/wiki/Counting_sort)。 –