首頁 >後端開發 >php教程 >PHP如何實作計數排序的程式碼

PHP如何實作計數排序的程式碼

不言
不言原創
2018-08-02 13:48:371572瀏覽

這篇文章要跟大家介紹的內容是關於PHP如何實現計數排序的程式碼,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

/**
 * 计数排序: 桶排序的一种
 */
$arr = [5,69,4,32,14,8,74,95,23,56,41,5,31,63];
// include 'data.php';
$length = count($arr);
$maxValue = $arr[0];

// 找出数组中的最大值
for ($i=1; $i < $length; $i++) {
    if ($arr[$i] > $maxValue) {
        $maxValue = $arr[$i];
    }
}
/**
 * 定长数组, 键会自动排序, PHP数组是hash表的实现,
 * 如果这里用普通的数组, 键不会自动排序, 不存在的键也不会自动填充null
 */
$frequency = new SplFixedArray($maxValue + 1);

/**
 * 统计arr中, 值出现的频次
 */
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);

相關文章推薦:

##php中echo()函數的用法(附程式碼)

Nginx如何來設定隱藏入口檔案index.php(程式碼)

以上是PHP如何實作計數排序的程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn