web開發(fā)中計數(shù)排序的示例分析

這篇文章將為大家詳細講解有關web開發(fā)中計數(shù)排序的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的10余年時間我們累計服務了上千家以及全國政企客戶,如木托盤等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質量監(jiān)控加上過硬的技術實力獲得客戶的一致稱譽。

計數(shù)排序

計數(shù)排序是一種非基于比較的排序算法,其空間復雜度和時間復雜度均為O(n+k),其中k是整數(shù)的范圍?;诒容^的排序算法時間復雜度最小是O(nlogn)的。該算法于1954年由 Harold H. Seward 提出。

計數(shù)排序的核心在于將輸入的數(shù)據(jù)值轉化為鍵存儲在額外開辟的數(shù)組空間中。作為一種線性時間復雜度的排序,計數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。

算法步驟

  1. 花O(n)的時間掃描一下整個序列 A,獲取最小值 min 和最大值 max

  2. 開辟一塊新的空間創(chuàng)建新的數(shù)組 B,長度為 ( max - min + 1)

  3. 數(shù)組 B 中 index 的元素記錄的值是 A 中某元素出現(xiàn)的次數(shù)

  4. 最后輸出目標整數(shù)序列,具體的邏輯是遍歷數(shù)組 B,輸出相應元素以及對應的個數(shù)

算法演示

web開發(fā)中計數(shù)排序的示例分析

排序動畫過程解釋

  1. 首先,掃描一下整個序列

  2. 獲得最小值為 2 ,最大值為 7

  3. 新建數(shù)組包含 2~7 的元素

  4. 再次掃描序列,將序列的值放置在新建數(shù)組中

  5. 掃描數(shù)字 5,數(shù)組中 index 為 3 的值為 5,次數(shù)為 1

  6. 掃描數(shù)字 3,數(shù)組中 index 為 1 的值為 3,次數(shù)為 1

  7. 掃描數(shù)字 4,數(shù)組中 index 為 2 的值為 4,次數(shù)為 1

  8. 掃描數(shù)字 7,數(shù)組中 index 為 5 的值為 7,次數(shù)為 1

  9. 掃描數(shù)字 2,數(shù)組中 index 為 0 的值為 2,次數(shù)為 1

  10. 掃描數(shù)字 4,數(shù)組中 index 為 2 的值為 4,次數(shù)為 2

  11. 掃描數(shù)字 3,數(shù)組中 index 為 1 的值為 3,次數(shù)為 2

  12. 按照這種節(jié)奏,掃描結束后,新建數(shù)組中存放了整個序列以及每個數(shù)字出現(xiàn)的次數(shù)

  13. 最后輸出目標整數(shù)序列

  14. 輸出數(shù)字 2,同時數(shù)組中 index 為 0 的值為 2 的元素次數(shù)變?yōu)?0

  15. 輸出數(shù)字 3,同時數(shù)組中 index 為 1 的值為 3 的元素次數(shù)變?yōu)?1

  16. 同樣的操作,整個序列就完全輸出了

代碼實現(xiàn)

為了更好的讓讀者用自己熟悉的編程語言來理解動畫,筆者將貼出多種編程語言的參考代碼,代碼全部來源于網(wǎng)上。

Go代碼實現(xiàn)

web開發(fā)中計數(shù)排序的示例分析

Java代碼實現(xiàn)

web開發(fā)中計數(shù)排序的示例分析

Python代碼實現(xiàn)

web開發(fā)中計數(shù)排序的示例分析

JavaScript代碼實現(xiàn)

web開發(fā)中計數(shù)排序的示例分析


關于“web開發(fā)中計數(shù)排序的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

本文題目:web開發(fā)中計數(shù)排序的示例分析
瀏覽路徑:http://muchs.cn/article42/ipipec.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗移動網(wǎng)站建設、標簽優(yōu)化、網(wǎng)站設計、定制網(wǎng)站品牌網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設