国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP排序算法之選擇排序

walterrwu / 823人閱讀

摘要:二選擇排序原理在一列數(shù)字中,選出最小數(shù)與第一個位置的數(shù)交換。至此確定了前兩個位置上的數(shù)。示例代碼選擇排序?qū)崿F(xiàn)思路雙重循環(huán)完成,外層控制輪數(shù),當(dāng)前的最小值。

二、選擇排序

  原理: 在一列數(shù)字中,選出最小數(shù)與第一個位置的數(shù)交換。然后在剩下的數(shù)當(dāng)中再找最小的與第二個位置的數(shù)交換,如此循環(huán)到倒數(shù)第二個數(shù)和最后一個數(shù)比較為止。(以下都是升序排列,即從小到大排列)

  舉例說明: $arr = array(6, 3, 8, 2, 9, 1);

  第一輪:

  第一次比較, 第一個數(shù) 6 與(3, 8, 2, 9, 1)中 3 比較,6大,當(dāng)前最小數(shù)為3,位置為 1

   第二次比較, 最小數(shù)字 3 與(3, 8, 2, 9, 1)中 8 比較,3小,當(dāng)前最小數(shù)為3,位置為 1

   第三次比較, 最小數(shù)字 3 與(3, 8, 2, 9, 1)中 2 比較,3大,當(dāng)前最小數(shù)為2,位置為 3

   第四次比較, 最小數(shù)字 2 與(3, 8, 2, 9, 1)中 9 比較,2小,當(dāng)前最小數(shù)為2,位置為 3

   第五次比較, 最小數(shù)字 2 與(3, 8, 2, 9, 1)中 1 比較,2大,當(dāng)前最小數(shù)為1,位置為 5

   第一輪比較完成后,確定最小數(shù)為1,小于第一個數(shù)6,交換位置上的數(shù),交換后結(jié)果為 1 3 8 2 9 6

   總結(jié):第一輪比較,可以確定第一個位置的最小值。

  第二輪:

   第一次比較, 3與(8, 2, 9, 6)中 8 比較,3小,當(dāng)前最小數(shù)為3,位置為 1

   第二次比較, 3與(8, 2, 9, 6)中 2 比較,3大,當(dāng)前最小數(shù)為2,位置為 3

   第三次比較, 2與(8, 2, 9, 6)中 9 比較,2小,當(dāng)前最小數(shù)為2,位置為 3

   第四次比較, 2與(8, 2, 9, 6)中 6 比較,2小,當(dāng)前最小數(shù)為2,位置為 3

   第二輪比較完成后,確定最小數(shù)為2,小于第二個數(shù)3,交換位置上的數(shù),交換后結(jié)果為 1 2 8 3 9 6

  總結(jié):第二輪比較,可以確定第二個位置的最小值。至此確定了前兩個位置上的數(shù)。

  第三輪:

   第一次比較, 8與( 3, 9, 6)中 3 比較,8大,當(dāng)前最小數(shù)為3,位置為3

    第二次比較, 3與( 3, 9, 6)中 9 比較,3小,當(dāng)前最小數(shù)為3,位置為3

   第三次比較, 6與( 3, 9, 6)中 6 比較,3小,當(dāng)前最小數(shù)為3,位置為3

    第三輪比較完成后,確定最小數(shù)為3,小于第三個數(shù)8,交換位置上的數(shù),交換后結(jié)果為 1 2 3 8 9 6

  總結(jié):第三輪比較,可以確定第三個位置的最小值。至此確定了前三個位置上的數(shù)。

 第四輪:

   第一次比較, 8與( 9, 6)中 9 比較,8小,當(dāng)前最小數(shù)為8,位置為3

   第二次比較, 8與( 9, 6)中 6 比較,8大,當(dāng)前最小數(shù)為6,位置為5

   第四輪比較完成后,確定最小數(shù)為6,小于第四個數(shù)8交換位置上的數(shù),交換后結(jié)果為 1 2 3 6 9 8

  總結(jié):第四輪比較,可以確定第四個個位置的最小值。至此確定了前四個位置上的數(shù)。

第五輪:

   第一次比較, 9與 8 比較,9大,當(dāng)前最小數(shù)為8,位置為5

    第五輪比較完成后,確定最小數(shù)為8,小于第五個數(shù)9,交換位置上的數(shù),交換后結(jié)果為 1  2  3  6  8  9

  總結(jié):第五輪比較,可以確定第五個個位置的最小值。至此確定了前5個位置上的數(shù)。

綜合以上五輪比較,每一輪比較都可以確定一個位置,對于N個數(shù),比較N-1輪可以確定N個位置上的數(shù),因?yàn)榇_定了N-1個位置,最后一個位置也就確定了。

示例代碼:
選擇排序 實(shí)現(xiàn)思路 雙重循環(huán)完成,外層控制輪數(shù),當(dāng)前的最小值。內(nèi)層 控制的比較次數(shù)
for ($i=0; $i < count($arr)-1; $i++) { //$i 當(dāng)前最小值的位置, 需要參與比較的元素

$p = $i;//先假設(shè)最小的值的位置

for ($j=$i+1; $j < count($arr); $j++) { //$j 當(dāng)前都需要和哪些元素比較,$i 后邊的。
    if($arr[$p] > $arr[$j])
    {
        $p = $j;
    }
}

if($p != $i)
{
    $tmp = $arr[$p];
    $arr[$p] = $arr[$i];
    $arr[$i] = $tmp;
}

}
var_dump($arr);

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/29230.html

相關(guān)文章

  • PHP面試四:邏輯與算法

    摘要:數(shù)據(jù)結(jié)構(gòu)常見數(shù)據(jù)結(jié)構(gòu)數(shù)組是最簡單而且應(yīng)用最廣泛的數(shù)據(jù)結(jié)構(gòu)特征使用連續(xù)內(nèi)存空間來存儲存放相同類型或著衍生類型的元素?cái)?shù)組比較特別,可以存放八種數(shù)據(jù)類型通過下標(biāo)來訪問集合特征保存不重復(fù)的元素字典特征就是關(guān)聯(lián)數(shù)組,以形式存儲棧,與隊(duì)列相似特征存儲數(shù) 數(shù)據(jù)結(jié)構(gòu) 常見數(shù)據(jù)結(jié)構(gòu) Array 數(shù)組是 最簡單 而且 應(yīng)用最廣泛 的數(shù)據(jù)結(jié)構(gòu) 特征: 1、使用連續(xù)內(nèi)存空間來存儲 2、存放相同類型或著衍生類型...

    smartlion 評論0 收藏0
  • PHP算法四大基礎(chǔ)算法

    摘要:而在證明算法是正確的基礎(chǔ)上,第二步就是分析算法的時間復(fù)雜度。算法的時間復(fù)雜度反映了程序執(zhí)行時間隨輸入規(guī)模增長而增長的量級,在很大程度上能很好反映出算法的優(yōu)劣與否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 雖然工作中,你覺得自己并沒有涉及到算法這方面的東西,但是算法是程序的...

    isLishude 評論0 收藏0
  • PHP 算法01選擇排序

    摘要:描述選擇最小的元素由左到右依次交換順序即完成元素由小到大的排序。選擇排序重點(diǎn)在于選擇最小元素。選擇排序每次循環(huán)都能排好一個元素,因此需要交換的次數(shù)等于元素個數(shù)。 描述 選擇最小的元素由左到右依次交換順序即完成元素由小到大的排序。選擇排序重點(diǎn)在于選擇最小元素。以下是較為詳細(xì)的描述: 首先,把所有的數(shù)據(jù)循環(huán)一遍找到最小的數(shù),然后和第一個數(shù)交換位置。 然后從第二個數(shù)起,一直循環(huán)到最后一個,...

    NikoManiac 評論0 收藏0
  • 利用PHP實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)排序(小白系列文章七)

    摘要:排序嚴(yán)格來說不算數(shù)據(jù)結(jié)構(gòu),更應(yīng)該歸于算法一類,因?yàn)閿?shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,排序參與其中,更多的是讓數(shù)據(jù)狀態(tài)發(fā)生了改變。 排序嚴(yán)格來說不算數(shù)據(jù)結(jié)構(gòu),更應(yīng)該歸于算法一類,因?yàn)閿?shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,排序參與其中,更多的是讓數(shù)據(jù)狀態(tài)發(fā)生了改變。于是,我們開始用PHP來聊聊算法。 引子 其實(shí)有一句話說的是不錯的,不必重復(fù)造輪子,所以下面我將引用別人的文章作為本文的引文,...

    jayzou 評論0 收藏0
  • PHP排序算法快速排序

    摘要:實(shí)現(xiàn)代碼判斷參數(shù)是否是一個數(shù)組遞歸出口數(shù)組長度為,直接返回?cái)?shù)組數(shù)組元素有多個,則定義兩個數(shù)組循環(huán)遍歷數(shù)組,把第一個元素當(dāng)做比較的對象判斷當(dāng)前元素的大小遞歸調(diào)用將所有的結(jié)果合并 原理:找到當(dāng)前數(shù)組中的任意一個元素(一般選擇第一個元素),作為標(biāo)準(zhǔn),新建兩個空數(shù)組left、rignt,遍歷整個數(shù)組元素,如果遍歷到的元素比當(dāng)前的元素小就放到數(shù)組left,比當(dāng)前的元素大放到rignt,然后再對新...

    CoderDock 評論0 收藏0

發(fā)表評論

0條評論

walterrwu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<