【選擇排序:第二個數至第n個數分別與第一個數比較,進行交換,第三個數至第n個數分別與第二個數比較,進行交換,直到排完】
| 代碼如下 |
複製代碼 |
function selectSort($arr,$style) { $temp=0; for($i=0;$i<count($arr)-1;$i++) { for($j=$i+1;$j<count($arr);$j++) { if($style=='bts') $op=$arr[$i]<$arr[$j]; else if($style=='stb') $op=$arr[$i]>$arr[$j]; if($op) { $temp=$arr[$i]; $arr[$i]=$arr[$j]; $arr[$j]=$temp; } } } foreach ($arr as $key => $value) { echo $value.','; } } $arr1=array(21.5,33,90,7,-4,5,55,11); selectSort($arr1,'stb'); |
【預設傳遞的是值,不是地址。如果在$arr前加個&,則和$arr1指向同一個地址,函數外的$arr1也被排好了】
| 代碼如下 |
複製代碼 |
function maoPao($arr,$style) { $temp=0; for($i=0;$i<count($arr)-1;$i++) { for($j=0;$j<count($arr)-1-$i;$j++) { if($style=='bts') $op=$arr[$j]<$arr[$j+1]; else if($style=='stb') $op=$arr[$j]>$arr[$j+1]; if($op) { $temp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } foreach ($arr as $key => $value) { echo $value.','; } } $arr1=array(101,101,-9,-8,0,76,1,57,43,90,23,-56); maoPao($arr1,'stb');//small to big |
【插入排序:第二個與第一個比較,交換,第三個與前兩個比較,交換。。。。第n個與前n-1個比較,交換】
| 代碼如下 |
複製代碼 |
function insertSort($arr,$style) { $temp=0; for($i=1;$i<count($arr);$i++) { for($j=0;$j<$i;$j++) { if($style=='bts') $op=$arr[$j]<$arr[$i]; else if($style=='stb') $op=$arr[$j]>$arr[$i]; if($op) { $temp=$arr[$j]; $arr[$j]=$arr[$i]; $arr[$i]=$temp; } } } foreach ($arr as $key => $value) { echo $value.','; } } $arr1=array(4,7,0,-7,1,14,5); insertSort($arr1,'bts'); |