亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

PHP 實(shí)現(xiàn)冒泡排序

genedna / 2831人閱讀

摘要:導(dǎo)語(yǔ)冒泡排序是相對(duì)比較簡(jiǎn)單常用的算法,同時(shí)在面試中也是最常被問(wèn)到的問(wèn)題。冒泡排序?qū)€(gè)項(xiàng)目需要的比較次數(shù),且可以原地排序。冒泡排序算法的運(yùn)作如下比較相鄰的元素。

導(dǎo)語(yǔ)

冒泡排序是相對(duì)比較簡(jiǎn)單、常用的算法,同時(shí)在面試中也是最常被問(wèn)到的問(wèn)題。自認(rèn)能力不夠,不能有更深的理解,下面就把一些資料中的內(nèi)容記錄下來(lái),文末有原文鏈接。

冒泡排序

冒泡排序(英語(yǔ):Bubble Sort)是一種簡(jiǎn)單的排序算法。它重復(fù)地走訪過(guò)要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái)。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說(shuō)該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來(lái)是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端。

冒泡排序?qū)?n 個(gè)項(xiàng)目需要 O(n2) 的比較次數(shù),且可以原地排序。盡管這個(gè)算法是最簡(jiǎn)單了解和實(shí)現(xiàn)的排序算法之一,但它對(duì)于包含大量的元素的數(shù)列排序是很沒(méi)有效率的。

冒泡排序算法的運(yùn)作如下:

比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。

對(duì)每一對(duì)相鄰元素作同樣的工作,從開(kāi)始第一對(duì)到結(jié)尾的最后一對(duì)。這步做完后,最后的元素會(huì)是最大的數(shù)。

針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。

持續(xù)每次對(duì)越來(lái)越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。

以上是維基百科中的介紹,可以看到,原理并不復(fù)雜。但是在數(shù)據(jù)量大時(shí),不是一個(gè)很好的選擇。

動(dòng)圖演示

需要注意的是,下圖與實(shí)例中的代碼,順序是相反的。

實(shí)例
 $arr[$k]) {
                // 前者大于后者,調(diào)換位置
                // 如果想要按照從大到小進(jìn)行排序,改為 $arr[$i] < $arr[$k]
                $temp = $arr[$i];
                $arr[$i] = $arr[$k];
                $arr[$k] = $temp;
            }
        }
    }

    return $arr;
}

print_r(bubbleSort($arr));
// Array ( [0] => 2 [1] => 3 [2] => 8 [3] => 16 [4] => 21 [5] => 23 [6] => 24 [7] => 32 [8] => 33 )

參考資料:冒泡排序、PHP冒泡排序(Bubble Sort)算法詳解、GIF演示排序算法。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/30030.html

相關(guān)文章

  • PHP排序算法之冒泡排序

    摘要:一冒泡排序原理對(duì)一組數(shù)據(jù),比較相鄰數(shù)據(jù)的大小,將值小數(shù)據(jù)在前面,值大的數(shù)據(jù)放在后面。通過(guò)以上五輪排序,若干次比較,我們有理由推斷出一個(gè)結(jié)論對(duì)于一個(gè)長(zhǎng)度為的數(shù)組,我們需要排序輪,每輪要比較次。 一、冒泡排序   原理:對(duì)一組數(shù)據(jù),比較相鄰數(shù)據(jù)的大小,將值小數(shù)據(jù)在前面,值大的數(shù)據(jù)放在后面。 (以下都是升序排列,即從小到大排列)   舉例說(shuō)明: $arr = array(6, 3, 8,...

    Raaabbit 評(píng)論0 收藏0
  • PHP面試:盡可能多的說(shuō)出你知道的排序算法

    摘要:良好的排序算法具有進(jìn)行最少的比較和交換的特征。冒泡排序是一個(gè)基于比較的排序算法,被認(rèn)為是效率最低的排序算法之一?,F(xiàn)在讓我們使用實(shí)現(xiàn)冒泡排序算法。插入排序到目前為止,我們已經(jīng)看到了兩種基于比較的排序算法。 預(yù)警 本文適合對(duì)于排序算法不太了解的新手同學(xué)觀看,大佬直接忽略即可。因?yàn)榭紤]到連貫性,所以篇幅較長(zhǎng)。老鐵們看完需要大概一個(gè)小時(shí),但是從入門到完全理解可能需要10個(gè)小時(shí)(哈哈哈,以我自己...

    objc94 評(píng)論0 收藏0
  • PHP 快速排序算法

    摘要:概念這里借用百度百科的一張圖來(lái),非常形象快速排序算法是對(duì)冒泡算法的一個(gè)優(yōu)化。獲取已經(jīng)打亂了順序的數(shù)組快速排序這里引用的是我之前寫的冒泡算法排序冒泡運(yùn)行結(jié)果 概念 這里借用百度百科的一張圖來(lái),非常形象:showImg(https://segmentfault.com/img/bVdlR6); 快速排序算法是對(duì)冒泡算法的一個(gè)優(yōu)化。他的思想是先對(duì)數(shù)組進(jìn)行分割, 把大的元素?cái)?shù)值放到一個(gè)臨時(shí)數(shù)...

    Coly 評(píng)論0 收藏0
  • 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)。本文是由于閱讀了文章《測(cè)試評(píng)...

    aisuhua 評(píng)論0 收藏0
  • php實(shí)現(xiàn)排序(選擇,冒泡,快速)

    摘要:它的基本思想是通過(guò)一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過(guò)程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。 選擇排序 選擇排序主要是將假設(shè)數(shù)組中的第一個(gè)是最小的,循環(huán)與數(shù)組中的第一個(gè)進(jìn)行比較 如果比其還小 則記錄下標(biāo) 進(jìn)行數(shù)值交換 效率相對(duì)冒泡來(lái)說(shuō)比較高 function s...

    biaoxiaoduan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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