$arr = array(1,43,54,62,21,66,32,78,36,76,39);
冒泡排序
function getBubble($arr){
$array_length = count($arr);//先判斷數組的長度
if($array_length <= 0){
return $arr;
}
for($i=0;$i<$array_length;$i++){
for($j=0;$j<$array_length-$i-1;$j++){
if($arr[$j]>$arr[$j+1]){
$tmp = $arr[$j+1];
$arr[$j+1] = $arr[$j];
$arr[$i] = $tmp;
}
}
}
return $arr;
}
選擇排序
function selectSort($arr){
$array_length = count($arr);
if($array_length <= 0){
return $arr;
}
for($i=0;$i<$array_length;$i++){
$p = $i;
for($j=0;$j<$array_length;$j++){
if($arr[$p]>$arr[$j]){
$p = $j;
}
}
if($p != $i){
$tmp = $arr[$p];
$arr[$p] = $arr[$i];
$arr[$i] = $tmp;
}
}
return $arr;
}
插入排序法
輸入一個元素,檢查數組列表中的每個元素,將其插入到一個已經排好序的數列中的適當位置,使數列依然有序,當最后一個元素放入合適位置時,該數組排序完畢。
- 代碼規律分析:
- 第一次大循環:$[1]與$[0]比;
- 第二次大循環:$[2]與$[1]比,$[1]與$[0]比;
- 第三次大循環:$[3]與$[2]比,$[2]與$[1]比,$[1]與$[0]比
function insertSort($arr){
$array_length = count($arr);
if($array_length <=1){return $arr;}
for($i=0;$i<$array_length;$i++){
for($j=$i;$j>0;$j--){
if($arr[$j]> $arr[$j+1]){
$tmp = $arr[$j+1];
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
}
function getInsert($arr){
$arr_length = count($arr);
if ($arr_length <= 1) {
return $arr;
}
// =======================================
// 先默認第一個下標為0的數是排好的數
for ($i=1; $i < $arr_length; $i++) {
//確定插入比較的數
$insertVal = $arr[$i];
//確定與前面比較的數比較
$insertIndex = $i - 1;
while ($insertIndex >=0 && $insertVal < $arr[$insertIndex]) {
//把數后移
$arr[$insertIndex + 1] = $arr[$insertIndex];
$insertIndex--;
}
$arr[$insertIndex+1] = $insertVal;
}
// =======================================
//先默認第一個下標為0的數是排好的數
// for ($i=1; $i < $arr_length; $i++) {
// $tmp = $arr[$i];//獲取當前需要比較的元素值
// //內層循環控制 比較 并 插入
// for ($j=$i-1; $j >= 0; $j--) {
// if ($tmp < $arr[$j]) {
// $arr[$j+1] = $arr[$j];
// $arr[$j] = $tmp;
// }else{
// break;
// }
// }
// }
return $arr;
}
快速排序法
function quickSort($arr){
$arr_length = count($arr);
if ($arr_length <= 1) {
return $arr;
}
$base_val = $arr[0];
$array_left = [];
$array_right = [];
for ($i=1; $i < $arr_length; $i++) {
if ($base_val > $arr[$i]) {
$array_left[] = $arr[$i];
}else{
$array_right[] = $arr[$i];
}
}
$array_left = quickSort($array_left);
$array_right = quickSort($array_right);
return array_merge($array_left,array($base_val),$array_right);
}