您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關web開發中計數排序的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
計數排序是一種非基于比較的排序算法,其空間復雜度和時間復雜度均為O(n+k),其中k是整數的范圍。基于比較的排序算法時間復雜度最小是O(nlogn)的。該算法于1954年由 Harold H. Seward 提出。
計數排序的核心在于將輸入的數據值轉化為鍵存儲在額外開辟的數組空間中。作為一種線性時間復雜度的排序,計數排序要求輸入的數據必須是有確定范圍的整數。
花O(n)的時間掃描一下整個序列 A,獲取最小值 min 和最大值 max
開辟一塊新的空間創建新的數組 B,長度為 ( max - min + 1)
數組 B 中 index 的元素記錄的值是 A 中某元素出現的次數
最后輸出目標整數序列,具體的邏輯是遍歷數組 B,輸出相應元素以及對應的個數
首先,掃描一下整個序列
獲得最小值為 2 ,最大值為 7
新建數組包含 2~7 的元素
再次掃描序列,將序列的值放置在新建數組中
掃描數字 5,數組中 index 為 3 的值為 5,次數為 1
掃描數字 3,數組中 index 為 1 的值為 3,次數為 1
掃描數字 4,數組中 index 為 2 的值為 4,次數為 1
掃描數字 7,數組中 index 為 5 的值為 7,次數為 1
掃描數字 2,數組中 index 為 0 的值為 2,次數為 1
掃描數字 4,數組中 index 為 2 的值為 4,次數為 2
掃描數字 3,數組中 index 為 1 的值為 3,次數為 2
按照這種節奏,掃描結束后,新建數組中存放了整個序列以及每個數字出現的次數
最后輸出目標整數序列
輸出數字 2,同時數組中 index 為 0 的值為 2 的元素次數變為 0
輸出數字 3,同時數組中 index 為 1 的值為 3 的元素次數變為 1
同樣的操作,整個序列就完全輸出了
為了更好的讓讀者用自己熟悉的編程語言來理解動畫,筆者將貼出多種編程語言的參考代碼,代碼全部來源于網上。
關于“web開發中計數排序的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。