排序演算法 詳解計數排序演算法

2021-10-04 20:12:51 字數 1321 閱讀 3441

計數排序是一種非比較排序,它適用於範圍比較集中的資料處理。臨時開闢乙個陣列,通過統計資料的個數,將資料集中,再將這個陣列展開,實現排序的過程。

時間複雜度 o(max(n,範圍))

空間複雜度 o(範圍)

首先就是c語言對範圍檢查不是很嚴格,我開闢陣列的時候,僅僅開闢了max-min個大小,最後也沒有釋放空間,但是程式可以正常執行。我通過檢視記憶體,發現初始化的時候已經越界訪問了,這樣是非常不安全的,最後我加了free函式,程式才出現報錯,所以對空間的檢查放到了釋放。我們寫**一定要注意細節。

另外我在大小比較的時候偷懶,直接用了else,導致程式出現了問題,我仔細檢查後發現問題,以後真是不能偷懶,要想清楚再寫出簡單一點的寫法,一定要細心!!!

計數排序演算法詳解

經典排序演算法 計數排序counting sort 注意與基數排序區分,這是兩個不同的排序 計數排序的過程類似小學選班幹部的過程,如某某人10票,作者9票,那某某人是班長,作者是副班長 大體分兩部分,第一部分是拉選票和投票,第二部分是根據你的票數入桶 看下具體的過程,一共需要三個陣列,分別是待排陣列...

演算法 排序 計數排序

計數排序不是基於比較的排序演算法,其核心在於將輸入的資料值轉化為鍵儲存在額外開闢的陣列空間中。作為一種線性時間複雜度的排序,計數排序要求輸入的資料必須是有確定範圍的整數。計數排序 counting sort 是一種穩定的排序演算法。計數排序使用乙個額外的陣列c,其中第i個元素是待排序陣列a中值等於i...

演算法 排序 計數排序

計數排序的核心思想就是將需要排序的陣列的元素轉為下標,在輔助空間陣列 輔助空間陣列的初始都是0 中找到對應元素的下標位置,將該位置的元素 掃瞄下標,將對應不為0的下標記錄賦值給原陣列,然後對應下標元素 圖例分析 具體 includevoid countsort int a,int len int m...