php四排序 選擇排序

2021-09-07 20:05:46 字數 2042 閱讀 5405

原理: 在一列數字中,選出最小數與第乙個位置的數交換。然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後乙個數比較為止。(以下都是公升序排列,即從小到大排列)

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

第一輪:

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

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

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

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

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

第一輪比較完成後,確定最小數為1,小於第乙個數6,交換位置上的數,交換後結果為 1  3  8  2  9  6

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

第二輪:

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

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

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

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

第二輪比較完成後,確定最小數為2,小於第二個數3,交換位置上的數,交換後結果為 1  2  8  3  9  6

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

第三輪:

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

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

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

第三輪比較完成後,確定最小數為3,小於第三個數8,交換位置上的數,交換後結果為 1  2  3  8  9  6

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

第四輪:

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

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

第四輪比較完成後,確定最小數為6,小於第四個數8交換位置上的數,交換後結果為 1  2  3  6  9  8

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

第五輪:

第一次比較, 9與 8 比較,9大,當前最小數為8,位置為5

第五輪比較完成後,確定最小數為8,小於第五個數9,交換位置上的數,交換後結果為 1  2  3  6  8  9

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

綜合以上五輪比較,每一輪比較都可以確定乙個位置,對於n個數,比較n-1輪可以確定n個位置上的數,因為確定了n-1個位置,最後乙個位置也就確定了。**如下:

<?php

function order($arr)

}if($i != $minindex)

}return $arr;

}

$arr = array(6, 3, 8, 2, 9, 1);

$res = order($arr);

var_dump($res );

php四排序 氣泡排序

演算法和資料結構是乙個程式設計工作人員的內功,技術牛不牛,一般都會看這兩點。作為php程式設計師,提公升技能當然也得學習演算法。下面介紹四種入門級排序演算法 氣泡排序 選擇排序 插入排序 快速排序。一 氣泡排序 原理 對一組資料,比較相鄰資料的大小,將值小資料在前面,值大的資料放在後面。以下都是公升...

01 排序 選擇排序

基本原理 對於給定的一組資料,經過第一輪比較後得到最小的資料,然後將該資料與第乙個資料的位置進行交換 然後對不包括第乙個資料以外的其它資料進行第二輪比較,得到最小的資料並與第二個資料進行位置交換 重複該過程,直到進行比較的資料只有乙個時為止。舉例 待排序陣列 38,65,97,76,13,27,49...

四 排序演算法

1.快速排序 procedure qsort l,r integer var i,j,mid integer begin i l j r mid a l r div 2 repeat while a i mid do dec j if i j then begin swap a i a j inc ...