摘要:計數(shù)排序不是基于比較的排序算法,其核心在于將輸入的數(shù)據(jù)值轉化為鍵存儲在額外開辟的數(shù)組空間中。作為一種線性時間復雜度的排序,計數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
計數(shù)排序不是基于比較的排序算法,其核心在于將輸入的數(shù)據(jù)值轉化為鍵存儲在額外開辟的數(shù)組空間中。 作為一種線性時間復雜度的排序,計數(shù)排序要求輸入的數(shù)據(jù)必須是有確定范圍的整數(shù)。
算法描述找出待排序的數(shù)組中最大和最小的元素; 統(tǒng)計數(shù)組中每個值為i的元素出現(xiàn)的次數(shù),存入數(shù)組C的第i項; 對所有的計數(shù)累加(從C中的第一個元素開始,每一項和前一項相加); 反向填充目標數(shù)組:將每個元素i放在新數(shù)組的第C(i)項,每放一個元素就將C(i)減去1。
/** * 計數(shù)排序: 桶排序的一種 */ $arr = [5,69,4,32,14,8,74,95,23,56,41,5,31,63]; $length = count($arr); $maxValue = $arr[0]; // 找出數(shù)組中的最大值 for ($i=1; $i < $length; $i++) { if ($arr[$i] > $maxValue) { $maxValue = $arr[$i]; } } /** * 定長數(shù)組, 鍵會自動排序, PHP數(shù)組是hash表的實現(xiàn), * 如果這里用普通的數(shù)組, 鍵不會自動排序, 不存在的鍵也不會自動填充null */ $frequency = new SplFixedArray($maxValue + 1); /** * 統(tǒng)計arr中, 值出現(xiàn)的頻次 */ for ($i=0; $i < $length; $i++) { if(empty($frequency[$arr[$i]])) $frequency[$arr[$i]] = 0; $frequency[$arr[$i]] += 1; } // 清空$arr $arr = []; // 遍歷frequency, 如果其元素有值, 那么將鍵push到arr中 for ($i=0; $i < count($frequency); $i++) { if (!empty($frequency[$i])) { for ($j=0; $j < $frequency[$i]; $j++) { $arr[] = $i; } } } print_r($arr);
參考文章: https://www.cnblogs.com/onepi...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29161.html
摘要:本文將介紹快速排序計數(shù)排序梳排序堆排序歸并排序希爾排序選擇排序插入排序地精排序聯(lián)合冒泡排序雞尾酒排序冒泡排序奇偶排序使用標志的冒泡排序種排序算法的實現(xiàn)。是一種不穩(wěn)定的排序算法。 本文將介紹快速排序、計數(shù)排序、梳排序、堆排序、歸并排序、希爾排序、選擇排序、插入排序、地精排序、聯(lián)合冒泡排序、雞尾酒排序、冒泡排序、奇偶排序、使用標志的冒泡排序14種排序算法的實現(xiàn)。本文是由于閱讀了文章《測試評...
摘要:主題的更新又來了,每次都不少,每次都是大更新。版本以上均可以安裝,推薦在版本以上中使用最佳性能。dux主題的更新又來了,每次都不少,每次都是大更新。dux主題7.4版本更新內容主要:新增文字LOGO、Ajax閱讀數(shù)、點贊狀態(tài)、后臺閱讀量排序等多項功能!DUX主題7.4版本適用于垂直站點、科技博客、個人站,扁平化設計、簡潔白色、超多功能配置、會員中心、直達鏈接、自動縮略圖! ? DUX...
摘要:前言一些案例中有的同學說為什么不可以用類型,類型完全可以實現(xiàn)呀我建議你看下我的專欄文章高級用法里面介紹了用類型的好處商品維度計數(shù)對商品喜歡數(shù),評論數(shù),鑒定數(shù),瀏覽數(shù)進行計數(shù)說起電商,肯定離不開商品,而附帶商品有各種計數(shù)喜歡數(shù),評論數(shù),鑒定數(shù) 前言 一些案例中有的同學說為什么不可以用string類型,string類型完全可以實現(xiàn)呀 我建議你看下我的專欄文章《Redis高級用法》,里面介...
摘要:之所以把計數(shù)排序桶排序基數(shù)排序放在一起比較,是因為它們的平均時間復雜度都為。動畫計數(shù)排序思想找出待排序的數(shù)組中最大和最小的元素。桶排序計數(shù)排序能派上用場嗎手機號碼有位,范圍太大,顯然不適合用這兩種排序算法。 showImg(https://segmentfault.com/img/bVbuF9e?w=900&h=500); 1. 前言 算法為王。 想學好前端,先練好內功,只有內功深厚者...
閱讀 1837·2021-11-11 16:54
閱讀 2061·2019-08-30 15:56
閱讀 2372·2019-08-30 15:44
閱讀 1297·2019-08-30 15:43
閱讀 1864·2019-08-30 11:07
閱讀 821·2019-08-29 17:11
閱讀 1470·2019-08-29 15:23
閱讀 3011·2019-08-29 13:01