溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用PHP實(shí)現(xiàn)簡(jiǎn)單的桶排序原理

發(fā)布時(shí)間:2020-04-26 11:49:40 來(lái)源:億速云 閱讀:154 作者:小新 欄目:編程語(yǔ)言

今天小編給大家分享的是使用PHP實(shí)現(xiàn)簡(jiǎn)單的桶排序原理,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會(huì)有所收獲的哦。

簡(jiǎn)單意義上的桶排序:

● 桶排序的原理是先安排N+1個(gè)桶作為容器,若數(shù)據(jù)范圍為N的話。

● 然后將測(cè)試數(shù)據(jù)(所需排序的數(shù)據(jù))進(jìn)行循環(huán),放入對(duì)應(yīng)的桶內(nèi)。數(shù)據(jù)一定是在范圍N內(nèi)的。

● 最后,循環(huán)桶里的元素,并且輸出,進(jìn)行從大到小或從小到大的排序。

例如:

● 我們的取值范圍是10,那么就要定義一個(gè) 11長(zhǎng)度的數(shù)組$arr. 并且讓所有的元素值都為0

● 然后,對(duì)需要排序的數(shù)組進(jìn)行循環(huán) 如5,3,5,2,8.

● 將數(shù)據(jù)依次對(duì)應(yīng)$arr桶數(shù)組內(nèi)元素,即 如果是5,則使$arr[5]++.

● 這時(shí)候 $arr[2]=1 $arr[3]=1 $arr[5]=2 $arr[8]=1

● 然后循環(huán)$arr的數(shù)組,若$arr[2]=1,則循環(huán)輸出元素2一次,$arr[5]=2,則循環(huán)輸出5兩次

● 結(jié)果輸出即為 2 3 5 5 8

● 如果循環(huán)數(shù)值是從大到小 則會(huì)是從大到小的排序

<?php
//設(shè)置默認(rèn)數(shù)組,默認(rèn)值為0;
$arr = array();
for ($i = 0; $i <= 10; $i++) {
    $arr[$i] = 0;
}
//設(shè)置測(cè)試的五個(gè)數(shù)據(jù)
$arr1 = array(5, 3, 5, 2, 8);
//根據(jù)數(shù)據(jù) 對(duì)默認(rèn)數(shù)組的對(duì)應(yīng)元素進(jìn)行+1;  J的取值范圍不能等于$arr1數(shù)組長(zhǎng)度  
for ($j = 0; $j < count($arr1); $j++) {
    //這邊給相應(yīng)的數(shù)組值+1
    $arr[$arr1[$j]]++;
}
//開始循環(huán)輸出  默認(rèn)數(shù)組 $arr 里面相應(yīng)的值
for ($k = 0; $k <= 10; $k++) {
    
    for ($l=1; $l <=$arr[$k]; $l++) { 
        echo "$k </n>";
    }
}
?>

缺點(diǎn):

● 浪費(fèi)空間.

● 無(wú)法進(jìn)行浮點(diǎn)數(shù)據(jù)的排序.

關(guān)于使用PHP實(shí)現(xiàn)簡(jiǎn)單的桶排序原理就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI