排序演算法 七大排序演算法的PHP實現

2022-07-20 22:45:19 字數 1625 閱讀 9568

由於最近在找工作,面試中難免會遇到一些演算法題,所以就用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 在某次遍歷中如果沒有資料交換,說明整個陣列已經有序。因此通過設定標誌位來記錄此次遍歷有無資料交換就可以判斷...