成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP 計(jì)數(shù)排序

孫吉亮 / 2262人閱讀

摘要:計(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

相關(guān)文章

  • PHP數(shù)組排序算法實(shí)現(xiàn)(14種)

    摘要:本文將介紹快速排序計(jì)數(shù)排序梳排序堆排序歸并排序希爾排序選擇排序插入排序地精排序聯(lián)合冒泡排序雞尾酒排序冒泡排序奇偶排序使用標(biāo)志的冒泡排序種排序算法的實(shí)現(xiàn)。是一種不穩(wěn)定的排序算法。 本文將介紹快速排序、計(jì)數(shù)排序、梳排序、堆排序、歸并排序、希爾排序、選擇排序、插入排序、地精排序、聯(lián)合冒泡排序、雞尾酒排序、冒泡排序、奇偶排序、使用標(biāo)志的冒泡排序14種排序算法的實(shí)現(xiàn)。本文是由于閱讀了文章《測試評...

    aisuhua 評論0 收藏0
  • DUX主題7.4版本更新:新增文字LOGO、Ajax閱讀數(shù)、點(diǎn)贊狀態(tài)、后臺(tái)閱讀量排序等多項(xiàng)功能

    摘要:主題的更新又來了,每次都不少,每次都是大更新。版本以上均可以安裝,推薦在版本以上中使用最佳性能。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...

    zhangxiangliang 評論0 收藏0
  • Redis在Php項(xiàng)目中的實(shí)際應(yīng)用場景

    摘要:前言一些案例中有的同學(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í)用法》,里面介...

    Blackjun 評論0 收藏0
  • JavaScript 數(shù)據(jù)結(jié)構(gòu)與算法之美 - 桶排序、計(jì)數(shù)排序、基數(shù)排序

    摘要:之所以把計(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)功深厚者...

    Awbeci 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<