使用C++實現基數排序算法
基數排序是一種非比較型整數排序算法,採用最低有效位優先(LSD)方式,按數字每一位(個位、十位等)排序,無需比較元素大小。其核心思想是通過穩定的計數排序處理每一位,確保低位排序結果在高位排序中保持有序。 實現步驟:1. 找出數組最大數,確定需處理的最高位數;2. 從低位到高位,對每一位用計數排序處理:統計當前位數字頻次,計算位置,從後往前穩定放置元素,最後複製回原數組。 C++代碼中,`countingSort`輔助函數實現按位排序(統計頻次、計算位置、穩定放置),`radixSort`主函數循環處理每一位。時間複雜度爲O(d×(n+k))(d爲最大位數,n爲數組長度,k=10),適用於整數範圍較大的場景。其核心是利用計數排序的穩定性,確保低位排序結果在高位排序中不被破壞。測試結果顯示排序後數組有序,驗證了算法有效性。
閱讀全文使用C++實現計數排序算法
**計數排序**是一種非比較型排序算法,核心思想是通過統計元素出現次數構建排序數組,適用於整數範圍不大的場景(如學生成績、年齡)。 **基本思路**:以數組`[4,2,2,8,3,3,1]`爲例,步驟爲:1. 確定最大值(8),創建計數數組`count`統計各元素出現次數(如`count[2]=2`);2. 按計數數組順序將元素插入結果數組,得到排序結果`[1,2,2,3,3,4,8]`。 **實現要點**:C++代碼中,先找最大值,統計次數,構建結果數組並複製回原數組。關鍵步驟包括計數數組初始化、統計次數、按次數填充結果數組。 **複雜度**:時間複雜度O(n+k)(n爲數組長度,k爲數據範圍),空間複雜度O(k)。 **適用場景**:非負整數且範圍小,需高效排序;負數可通過偏移量轉換(如加最小值)處理。 計數排序通過“計數-構建”邏輯實現線性時間排序,是處理小範圍整數
閱讀全文