冒泡排序和快速排序

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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值