PHP基礎之排序
前言
之前簡單介紹了流程控制,函式,陣列等。有興趣的可以看看。
PHP入門之型別與運算子
PHP入門之流程控制
PHP入門之函式
PHP入門之陣列
接下來介紹一下排序,排序是將一組資料,依指定的順序進行排列的過程。常用的排序方法有冒泡法,選擇排序法,插入排序法。
氣泡排序法
思想:
它重複走過要排序的元素列,依次比較兩個相鄰的元素,如果順序錯誤就把它們交換過來,直到沒有需要交換的為止。
程式碼案例:
<?php #氣泡排序 $myarr=array(4,3,9,1,6,23.5); function bubbleSort (&$myarr){ $temp=0; #N個數排序,要排N-1次。外層控制迴圈多少趟 for ($i=0;$i<count($myarr)-1;$i++){ #控制每一趟迴圈的次數。 for ($j=0;$j<count($myarr)-1-$i;$j++){ if ($myarr[$j]>$myarr[$j+1]){ $temp=$myarr[$j]; $myarr[$j]=$myarr[$j+1]; $myarr[$j+1]=$temp; } } } } bubbleSort($myarr); print_r($myarr); #列印陣列 ?>
輸出結果為:
Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )
選擇排序法
思想:
假設第一個為最小(大)元素,依次比較,如果錯誤,交換順序,找到未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
程式碼案例:
<?php #選擇排序 $myarr=array(4,3,9,1,6,23.5); function selectionSort (&$myarr){ $temp=0; for ($i=0;$i<count($myarr)-1;$i++){ #將第一個值認為是最小的值 $minval=$myarr[$i]; #記錄最小值的下標 $minindex=$i; for ($j=$i+1;$j<count($myarr);$j++){ if ($minval>$myarr[$j]){ $minval=$myarr[$j]; $minindex=$j; } } $temp=$myarr[$i]; $myarr[$i]=$myarr[$minindex]; $myarr[$minindex]=$temp; } } selectionSort($myarr); print_r($myarr); #列印陣列 ?>
輸出結果:
Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )
插入排序
思想:
插入排序就像我們玩撲克牌,右手為亂排的,我們一張張檢視,為它找合適的位置插入到左手的有序牌中。
插入排序是指在待排序的元素中,假設前面n-1(其中n>=2)個數已經是排好順序的,現將第n個數插到前面已經排好的序列中,然後找到合適自己的位置,使得插入第n個數的這個序列也是排好順序的。按照此法對所有元素進行插入,直到整個序列排為有序的過程,稱為插入排序。
程式碼案例:
<?php #插入排序 $myarr=array(4,3,9,1,6,23.5); function insertSort (&$myarr){ for ($i=1;$i<count($myarr);$i++){ #這是要插入的數 $insertval=$myarr[$i]; #這是和插入的數進行比較 $insertindex=$i-1; #滿足條件說明我們還沒有找到合適的位置 while ($insertindex>=0 && $insertval<$myarr[$insertindex]){ $myarr[$insertindex+1]=$myarr[$insertindex]; $insertindex--; } #插入(給$insertval找到合適的位置) $myarr[$insertindex+1]=$insertval; } } insertSort($myarr); print_r($myarr); ?>
輸出結果:
Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )
小結
簡單介紹了一下常用的三種排序方法,希望對大家有所幫助。