PHP中的四大演算法
阿新 • • 發佈:2018-11-09
圖 | 自制
文 | 挨踢小子
——此文僅代表個人學習所得,歡迎閱覽
如有侵權,請私信刪除
氣泡排序
$arr=array(22,43,4,63,21,66,22,38,36,76,49);
function bubbleSort($arr)
{
$len=count($arr);
for($i=1;$i<$len;$i++)
{
for($k=0;$k<$len-$i;$k++)
{
if($arr[$k]>$arr[$k+1])
{
$tmp=$arr[$k+1];
$arr[$k+1]=$arr[$k];
$arr[$k]=$tmp;
}
}
}
return $arr;
}
選擇排序
$arr=array(22,43,4,63,21,66,22,38,36,76,49);
function selectSort($arr) {
$len=count($arr);
for($i=0; $i<$len-1; $i++) {
$p = $i;
//假定第一個是最小值的位置
for($j=$i+ 1; $j<$len; $j++) {
if($arr[$p] > $arr[$j]) {
$p = $j;
//判斷找出最小值的位置。
}
}
if($p != $i) {
$tmp = $arr[$p];
$arr[$p] = $arr[$i];
$arr[$i] = $tmp;
}
}
return $arr;
}
插入排序
$arr=array(22,43,4,62,21,66,22,78,36,76,39);
function insertSort($arr) {
$len=count($arr);
for($i=1; $i<$len; $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;
}
快速排序
$arr=array(22,43,4,63,21,66,22,38,36,76,49);
function quickSort($arr)
{
//判斷陣列是否適合排序
$length = count($arr);
if ($length <= 1) {
return $arr;
}
//選擇第一個元素作為基準
$base_num = $arr[0];
//遍歷除了標尺外的所有元素,
//按照大小關係放入兩個陣列內
//初始化兩個陣列
$left_array = array();
//小於基準的
$right_array = array();
//大於基準的
for ($i = 1; $i < $length; $i++) {
if ($base_num > $arr[$i]) {
//放入左邊陣列
$left_array[] = $arr[$i];
} else {
//放入右邊陣列
$right_array[] = $arr[$i];
}
}
//再分別對左邊和右邊的陣列進行相同的
//序處理方式遞迴呼叫這個函式
$left_array = quickSort($left_array);
$right_array = quickSort($right_array);
//然後合併陣列
return array_merge($left_array,array($base_num),$right_array);
}
●作者簡介:挨踢小子,現在就讀於某某大學,一個一無所有,努力拼搏不負青春的小子,喜歡文字,愛好讀書。公眾號: 挨踢小子(LN-aitixiaozi )。