由於最近在找工作,面試中難免會遇到一些演算法題,所以就用php把七大排序演算法都實現了一遍,也當做是一種複習於沉澱。
氣泡排序 2. 選擇排序 3. 插入排序 4. 快速排序 5. 希爾排序 6. 歸併排序 7. 堆排序(較麻煩)
/**
* 氣泡排序
*/function bubble($arr)
} }return $arr;
}
/**
* 選擇排序
*/function select($arr)
} if ($minindex != $i)
} return $arr;
}
/**
* 插入排序
*/function insert($arr) else
} }return $arr;
}
/**
* 快速排序
*/function fast($arr)
$mid = $arr[0];
$left = ;
$right = ;
for ($i=1; $i<$length; ++$i) else }
$sortleft = fast($left);
$sortright = fast($right);
return array_merge($sortleft, [$mid], $sortright);
}
/**
* 歸併排序
*/function merge($arr)
$left = ;
$right = ;
for ($i=0; $i<$length; ++$i) else
} $left = merge($left);
$right = merge($right);
$merge = ;
while (count($left) > 0 && count($right) >0) else
} if (count($left) > 0) elseif (count($right) > 0)
return $merge;
}
/**
* 希爾排序
*/function shell($arr) else
}} echo $gap."\n";
} return $arr;
}
/**
* 堆排序
*/function heap($arr)
for ($i=$length-1; $i>=0; --$i)
return $arr;
}function adjustheap($arr, $index, $length)
if ($rchild<$length && $arr[$rchild] > $arr[$max])
if ($max != $index) }
return $arr;
}
七大排序演算法
氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...
七大排序演算法
七大排序分類 插入排序 直接插入排序 穩定 希爾排序 不穩定 選擇排序 簡單選擇排序 穩定 堆排序 不穩定 交換排序 氣泡排序 穩定 快速排序 不穩定 歸併排序。直接插入排序 時間複雜度 o n 2 演算法穩定性 穩定void straightinsertsort int a,int n 氣泡排序 ...
七大排序演算法
首先回顧下各種排序的主要思路 一 氣泡排序 氣泡排序主要思路是 通過交換使相鄰的兩個數變成小數在前大數在後,這樣每次遍歷後,最大的數就 沉 到最後面了。重複n次即可以使陣列有序。氣泡排序改進1 在某次遍歷中如果沒有資料交換,說明整個陣列已經有序。因此通過設定標誌位來記錄此次遍歷有無資料交換就可以判斷...