前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >排序算法小结

排序算法小结

作者头像
用户7657330
发布2022-09-08 15:59:45
1360
发布2022-09-08 15:59:45
举报
文章被收录于专栏:程序生涯程序生涯

快速排序

十分常用的高效率的算法,其思想是:先选一个标尺,用它把整个队列过一遍筛选,以保证其左边的元素都不大于它,其右边的元素都不小于它

代码语言:javascript
复制
function quickSort($arr){
    //获取数组长度
    $length = count($arr);
    // 判断长度是否需要继续二分比较
    if($length <= 1){
        return $arr;
    }
    // 定义两个空数组,用于存放和基准元素的比较后的结果
    $left = [];
    $right = [];
    // 遍历数组
    for($i=1; $i < $length; $i++) {
    // 和基准元素作比较
        if($arr[$i] > $base) {
            $right[] = $arr[$i];
        }
        $left[] = $arr[$i];
    }
}

// 然后递归分别处理left和right

$left = quickSort($left);

$right = quickSort($right);

// 合并

return array_merge($left,[$base],$right);

冒泡排序

思路:法如其名,就像冒泡一样,每次从数组中冒出一个最大的数。

比如:2,4,1

第一次冒出4:2,1,4

第二次冒出2:1,2,4

代码语言:javascript
复制
function bubbleSort($arr){
    // 获取数组长度
    $length = count($arr);
    // 第一层循环控制冒泡轮次
    for ($i=0; $i < $length-1; $i++) {
        // 内层循环控制从第0个键值和后一个键值比较,每次冒出一个最大的数
        for($k=0; $k < $length-$i; $k++) {
            if($arr[$k] > $arr[$k+1]){
                $tmp = $arr[$k+1];
                $arr[$k+1] = $arr[$k];
                $arr[$k] = $tmp;
            }
        }
    }
    return $arr;
}

选择排序

思路:每次选择一个相应的元素,然后将其放到指定的位置

代码语言:javascript
复制
function selectSort($arr){
    // 实现思路
    // 双重循环完成,外层控制轮数,当前的最小值,内层控制比较次数
    // 获取长度
    $length = count($arr);
    for($i=0; $i < $length - 1; $i++) {
        // 假设最小值的位置
        $p = $i;
        // 使用假设的最小值和其他值比较,找到当前的最小值
        for($j=$i+1; $j < $length; $j++) {
            // $arr[$p] 是已知的当前最小值
            // 判断当前循环值和已知最小值的比较,当发下更小的值时记录下键,并进行下一次比较
            if($arr[$p] > $arr[$j]) {
                $p = $j;
                // 比假设的值更小
            }
        }
        // 通过内部for循环找到了当前最小值的key,并保存在$p中
        // 判断 日光当前$p 中的键和假设的最小值的键不一致增将其互换
        if($p != $i) {
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }
    // 返回最终结果
    return $arr;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速排序
  • 冒泡排序
  • 选择排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档