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