欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

PHP中排序算法原理是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹PHP中排序算法原理是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司主營(yíng)陸良網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開發(fā),陸良h5小程序制作搭建,陸良網(wǎng)站營(yíng)銷推廣歡迎陸良等地區(qū)企業(yè)咨詢

冒泡排序原理

原理描述:

一次比較倆個(gè)相鄰的元素,大的元素后移,小的元素前移(交換位置)。直到找出大的元素。就像是氣泡一樣,大的向下沉,小的向上冒。

流程:

有一個(gè)無(wú)序數(shù)組 $arr = [8, 9, 3, 6, 1, 4]

第一次外循環(huán) :找出大值 9,要倆倆相比,比 5 次。
8 9 3 6 1 4 第一次, 8 跟 9 比,9 大,所以沒(méi)有交換位置。
8 3 9 6 1 4 第二次, 9 跟 3 比, 9 大,交換位置。
8 3 6 9 1 4 第三次, 9 跟 6 比, 9 大,交換位置。
8 3 6 1 9 4 第四次, 9 跟 1 比, 9 大,交換位置。
8 3 6 1 4 9 第五次, 9 跟 4 比, 9 大,交換位置。
第二次外循環(huán):找出第二大值 8,要倆倆相比,比 4 次。因?yàn)樯弦徊揭呀?jīng)找到大值了。
3 8 6 1 4 9 第一次,8 跟 3 比,8 大, 交換位置。
3 6 8 1 4 9 第二次,8 跟 6 比,8 大, 交換位置。
3 6 1 8 4 9 第三次,8 跟 1 比,8 大, 交換位置。
3 6 1 4 8 9 第四次,8 跟 4 比,8 大, 交換位置。
第三次外循環(huán):找出第三大的值 6,要倆倆相比,比三次。
3 6 1 4 8 9 第一次,3 跟 6 比,6 大,位置沒(méi)有變化。
3 1 6 4 8 9 第二次,6 跟 1 比,6 大,交換位置。
3 1 4 6 8 9 第三次,6 跟 4 比,6 大,交換位置。
第四次外循環(huán):找出第四大的值 4,要倆倆相比,比 2 次。
1 3 4 6 8 9 第一次, 3 跟 1 比, 3 大,交換位置。
1 3 4 6 8 9 第二次, 3 跟 4 比, 4 大,位置不變。
第五次外循環(huán):找出第五大的值 3, 比一次就夠了。
1 3 4 6 8 9 比一次。1 跟 3 比,3 大,位置沒(méi)有變化。

總結(jié):

1. 外層循環(huán)要元素?cái)?shù) - 1次。負(fù)責(zé)找出大值。

2. 內(nèi)層循環(huán)逐層遞減一次。負(fù)責(zé)倆倆相比較,交換元素位置。

代碼:

<?php
        function bubbleSort($arr) 
        {
            $len = count($arr);//獲取元素個(gè)數(shù)
            for ($i = 0; $i < $len - 1; $i ++) {//找出大值
                $flag = 0;//做一個(gè)標(biāo)記
                for($j = 0; $j < $len - 1 - $i; $j++) {//倆倆相比較,交換位置
                    if ($arr[$j] > $arr[$j + 1]) {
                        //$temp = $arr[$j];//存當(dāng)前元素
                        //$arr[$j] = $arr[$j + 1];//把當(dāng)前元素的值換成下一個(gè)元素的值
                        //$arr[$j + 1] = $temp;//把下一個(gè)元素的值換成上一個(gè)元素的值。
                        list($arr[$j], $arr[$j + 1]) = [$arr[$j + 1], $arr[$j]];//來(lái)自lovecn的評(píng)論,有時(shí)候思維有些固化。
                        $flag = 1;//交換位置就記錄。
                    }
                }
                if ($flag == 0) {//沒(méi)有發(fā)生交換位置,說(shuō)明排序已經(jīng)完成。可以推出循環(huán)。
                    break;
                }
            }
            return $arr;
        }

快速排序原理(遞歸)

原理描述:

從數(shù)組中取第一個(gè)值作為參照物,比這個(gè)值小的放在左邊,比這個(gè)值大的放在右邊,這樣就會(huì)有倆個(gè)新的數(shù)組,遞歸處理倆個(gè)數(shù)組,然后左邊,參照物,右邊合并。注意:有遞歸就要找到遞歸出口,不然就會(huì)一直遞歸下去。

流程:

用文字?jǐn)⑹隽鞒烫闊蛷木W(wǎng)上找了一個(gè)圖片,過(guò)程很清晰。

PHP中排序算法原理是什么

代碼:

    <?php
        function quickSort($arr)
        {
            $len = count($arr);
            //遞歸出口
            if($len <= 1) {
                return $arr;
            }
            $markValue = $arr[0];//參照物。
            $left = $right = [];//定義左邊和右邊。
            for($i = 1; $i < $len; $i++) {//從1開始循環(huán),因?yàn)榈谝粋€(gè)元素當(dāng)作參照物。
                if($arr[$i] > $markValue) {//大于參照物的放在右邊。
                    $right[] = $arr[$i];
                } else {//小于和等于參照物的元素都放進(jìn)左邊,這樣會(huì)避免如果數(shù)組有重復(fù)元素時(shí),會(huì)漏掉元素。
                    $left[] = $arr[$i];
                }
            }
            return array_merge(quickSort($left), [$markValue], quickSort($right));
        }

插入排序

原理描述:

將要排序的數(shù)組分成倆個(gè)部分,取數(shù)組第一個(gè)元素放有序集合中,剩下的放到無(wú)序集合中。將需要排序的數(shù),與前面已經(jīng)排好序的數(shù)據(jù)從后往前進(jìn)行比較,直到找到小于或者等于它的數(shù),使其插入到相應(yīng)的位置。

我的記憶方法:

假設(shè)有倆個(gè)箱子,第一個(gè)箱子是透明并且是空的,要用來(lái)裝有序元素,第二個(gè)箱子是不透明并且是滿的,裝無(wú)序元素。(其實(shí)裝什么都行,你喜歡的讓你容易記住的最好)。

1.第一步:在不透明箱子里隨便拿一個(gè)元素,直接扔到透明的箱子里
2.第二步:再?gòu)牟煌该鞯南渥永锬贸鲆粋€(gè)元素,放進(jìn)透明箱子里前,做比較。如果大就放后面,如果小就放前面。
3.重復(fù)第二步,但是我們每次需要比較的次數(shù)增加了,因?yàn)橥该飨渥永镌囟嗔耍钡秸业胶线m的位置。

流程:

PHP中排序算法原理是什么

<?php
    function insertSort($arr)
    {
        $len = count($arr);
        if ($len <= 1) {//一個(gè)元素或者沒(méi)有元素,排序無(wú)意義。
            return $arr;
        }
        for($i = 0; $i < $len - 1; $i++) {
            for($j = $i + 1; $j > 0; $j--){//每次比較次數(shù)增加。因?yàn)橛行蚣显卦谠黾印?                if ($arr[$j] < $arr[$j - 1]) {
                    list($arr[$j], $arr[$j - 1]) = [$arr[$j - 1], $arr[$j]];//交換位置。
                }
            }
        }
        return $arr;
    }

選擇排序

原理描述:

每次一次從數(shù)組中取出最小元素或者大元素,放到指定位置。

第一步:給第一個(gè)元素一個(gè)圣火令,和后面到每個(gè)元素比較,(我是取最小元素)。遇到比它小到元素就把這個(gè)圣火令給它,知道把圣火令交給最小元素手里。

第二步:交換位置,圣火令交給第二哥元素,重復(fù)第一步。

流程:

PHP中排序算法原理是什么

<?php
    function selectSort($arr)
    {
        $len = count($arr);
        if ($len <= 1) {//一個(gè)元素或者沒(méi)有元素,排序沒(méi)有意義。
            return $arr;
        }
        for($i = 0; $i < $len - 1; $i++) {
            $p = $i;//給第一個(gè)元素圣火令。
            for($j =  $i + 1; $j < $len; $j++) {
                if ($arr[$j] < $arr[$p]) {//有圣火令的元素和后面的元素比較,把圣火令交給較小的元素。
                    $p = $j;
                }
            }
            list($arr[$p], $arr[$i]) = [$arr[$i], $arr[p]];
        }
        return $arr;
    }

以上是PHP中排序算法原理是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站名稱:PHP中排序算法原理是什么-創(chuàng)新互聯(lián)
分享地址:http://chinadenli.net/article8/cohdip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站網(wǎng)站改版品牌網(wǎng)站建設(shè)ChatGPT網(wǎng)站排名域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)