php四排序 氣泡排序

2021-09-22 05:52:40 字數 2140 閱讀 5629

演算法和資料結構是乙個程式設計工作人員的內功,技術牛不牛,一般都會看這兩點。作為php程式設計師, 提公升技能當然也得學習演算法。

下面介紹四種入門級排序演算法:氣泡排序、選擇排序、插入排序、快速排序。

一、氣泡排序

原理:對一組資料,比較相鄰資料的大小,將值小資料在前面,值大的資料放在後面。   (以下都是公升序排列,即從小到大排列)

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

$arr 有6個資料,按照兩兩比較大小如下,注意  比較輪數 和 每輪比較次數 

第一輪排序:

第一次比較  6和3比較 結果:3    6   8   2   9   1     

第二次比較  6和3比較 結果:3    6   8   2   9   1 

第三次比較  8和2比較 結果:3    6   2   8   9   1 

第四次比較  8和9比較 結果:3    6   2   8   9   1 

第五次比較  9和1比較 結果:3    6   2   8   1   9 

第一輪比較總結:1.排序第1輪、比較5次,沒有獲得從小到大的排序   2.因為每次比較都是大數往後靠,所以比較完成後,可以確定大數排在最後(9 已經冒泡冒出來了,下輪比較可以不用比較了 )

第二輪排序:

第一次比較  3和6比較 結果:3    6   2   8   1   9     

第二次比較  6和2比較 結果:3    2   6   8   1   9 

第三次比較  6和8比較 結果:3    2   6   8   1   9 

第四次比較  8和1比較 結果:3    2   6   1   8   9 

第二輪比較總結:1.排序第2輪、比較4次,沒有獲得從小到大的排序   2.冒泡出了 8,下輪不用比較8 了

第三輪排序:

第一次比較  3和2比較 結果:2    3   6   1   8   9     

第二次比較  3和6比較 結果:2    3   6   1   8   9 

第三次比較  6和1比較 結果:2    3   1   6   8   9 

第三輪比較總結:1.排序第3輪、比較3次,沒有獲得從小到大的排序   2.冒泡出了 6,下輪不用比較6 了

第四輪排序:

第一次比較  2和3比較 結果:2    3   1   6   8   9     

第二次比較  3和1比較 結果:2    1   3   6   8   9 

第四輪比較總結:1.排序第4輪、比較2次,沒有獲得從小到大的排序   2.冒泡出了 3,下輪不用比較3 了

第五輪排序:

第一次比較  2和1比較 結果:1   2   3   6   8   9     

第五輪比較總結:1.排序第5輪、比較1次,沒有獲得從小到大的排序   2.冒泡出了 2,由於還剩乙個1,不用再比較了,至此通過5輪排序,完成整個排序。

通過以上五輪排序,若干次比較,我們有理由推斷出乙個結論:

對於乙個長度為n的陣列,我們需要排序 n-1 輪,每 i 輪 要比較 n-i 次。對此我們可以用雙重迴圈語句,外層迴圈控制迴圈輪次,內層迴圈控制每輪的比較次數。

<?php

$order_array=array(

5,4,3,6,7,1,2,10,8,9

);function bubble_order($arr)}}

return $arr;

}$new_order_arr=bubble_order($order_array);

echo "";

var_dump($new_order_arr);

php四排序 選擇排序

原理 在一列數字中,選出最小數與第乙個位置的數交換。然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後乙個數比較為止。以下都是公升序排列,即從小到大排列 舉例說明 arr array 6,3,8,2,9,1 第一輪 第一次比較,第乙個數 6 與 3,8,2,9,1 中 3...

03 排序 氣泡排序

基本原理 顧名思義就是整個過程向氣泡一樣往上公升,單向氣泡排序的基本原理就是 對於給定的n個資料,從第乙個資料開始一次對相鄰的兩個記錄進行比較,當前面的記錄大於後面的記錄時,交換位置,進行一輪比較和換位後,n個記錄中最大的那個被排在最後,即第n位。然後對前面n 1個記錄進行第二次比較,重複該過程。實...

2 排序演算法 氣泡排序

氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。作為最簡單...