排序算法

冒泡排序(将无序表中的所有记录,通过指针后移,其值不断的进行两两比较,大小不一则进行互换,得出升序序列或者降序序列)
1
2
3
4
5
6
7
8
9
10
11
12function swap(&$x, &$y) {
$t = $x;
$x = $y;
$y = $t;
}
function bubble_sort(&$arr) {
for ($i = 0; $i < count($arr) - 1; $i++)
for ($j = 0; $j < count($arr) - 1 - $i; $j++)
if ($arr[$j] > $arr[$j + 1])
swap($arr[$j], $arr[$j + 1]);
}选择排序( n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上)
插入排序(重写,将数据按照一定的顺序一个一个的插入到有序的表,两两相比,大小不一就互换位置)
1 | function insertionSort($arr) |
- 希尔排序 (其实就是另类的插入排序,先不断的分批小段(跳跃固定数量进行组合)进行插入排序,使得总体数据归于有序,最终所有的再一起排序,降低了时间复杂度)
- 基数排序(按照数学意义上的个十百千万来进行排序,实际写代码基本用不到)
- 快速排序(基于比较的排序,每次选定一个数,将小于的放左边,大于的放右边,不断递归,最终就由小到大排序了)
- 记数排序