這是乙個排序題,都是老生常談的東西了,之前用的排序演算法都是通過比較大小進行排序,貼一下不用比較大小的計數排序的**。
計數排序的思想是:對於陣列中乙個需要排序的數字x來說,算出陣列中小於等於它的數字個數便可得出該數在有序陣列中的位置。該演算法只適用於整數陣列,時間複雜度為o(n
+k)o(n+k)
o(n+k)
,k為數字的最大值,是用空間換時間。
對於0-k的數字範圍和資料量n,當k=n時效果最好。
vector<
int>
sortarray
(vector<
int>
& nums)
vector<
int>
cnt(max_num-min_num+1,
0); vector<
int>
a(len)
;for
(auto i:nums)
//統計數字出現的個數
for(
int i =
1;i < cnt.
size()
;i++
)//算出小於等於它的數字個數
for(
int i = nums.
size()
-1; i >=
0;i--
)//從後往前處理保證是穩定排序
return a;
}
leetcode 912 排序陣列
給定乙個整數陣列 nums,將該陣列公升序排列。示例 1 輸入 5,2,3,1 輸出 1,2,3,5 示例 2 輸入 5,1,1,2,0,0 輸出 0,0,1,1,2,5 1 a.length 10000 50000 a i 50000實際上python自帶的sort函式是最好的,用了timesor...
LeetCode 912 排序陣列
排序陣列 給你乙個整數陣列 nums,請你將該陣列公升序排列。class solution for int i 0 i nums.length i 如果沒有資料交換,說明已經完全有序,提前退出迴圈if flag return nums class solution 記錄最小值的索引 int min ...
LeetCode 912 排序陣列
difficulty 中等 給你乙個整數陣列nums,請你將該陣列公升序排列。示例 1 輸入 nums 5,2,3,1 輸出 1,2,3,5 示例 2 輸入 nums 5,1,1,2,0,0 輸出 0,0,1,1,2,5 1 nums.length 50000 50000 nums i 50000 ...