1.冒泡排序
实现过程
冒泡排序法应该是排序中最常见的一种了,它的实现就是比较两个相邻的元素,如果前面的元素比后面的元素大,那就交换元素. 之后再去比较接下来的两个相邻的元素,一直到结束.此时第一轮查找结束后,会找到整个数组中元素最大的并且在数组的末尾.依次循环找到数组中第二大的元素,第三大,第四……
代码
/**
* PHP
*/
function bubble_sort($arr)
{
// 取数组长度
$count = count($arr);
// 控制循环的轮数
for ($i = 0; $i < $count - 1; $i++) {
// 每一轮需要比较的数组长度限制
for ($j = 0; $j < $count - $i - 1; $j++) {
// 如果前面大于后面
if ($arr[$j] > $arr[$j + 1]) {
// 交换位置
$tmp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $tmp;
}
}
}
return $arr;
}
# Python
def bubble_sort(arr):
length = len(arr)
for i in range(length-1):
for j in range(0,length-i-1):
if arr[j] > arr[j+1]:
tmp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = tmp
return arr
2.快速排序
实现过程
基于递归完成.
1.在数组中挑选一个元素(所谓的基准值,一般取第一个值就好)
2.循环数组与基准值比较,比基准值小的放基准值前面,大的放基准值后面
3.递归把小于基准值的数组和大于基准值的数组再进行排序
4.合并数组
代码
function quickSort($arr)
{
// 当数组长度小于2时直接返回
if (count($arr) < 2) {
return $arr;
}
// 基准值 (一般为第一个元素)
$basic = $arr[0];
$left = array();
$right = array();
// 数组下标从1开始,依次和基准值比较
// 小的放前面, 大的放后面
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i] > $basic) {
$right[] = $arr[$i];
} else {
$left[] = $arr[$i];
}
}
// 递归去排序基准值前后的元素
$right = quickSort($right);
$left = quickSort($left);
// 合并数组 中间为基准值
return array_merge($left, array($basic), $right);
}