首页 > php教程 > php手册 > 正文

[常用算法PHP实现]之鸡尾酒排序

php中文网
发布: 2016-06-06 20:08:10
原创
1364人浏览过

以下概念摘自维基百科: 鸡尾酒排序,也叫定向冒泡排序,?鸡尾酒搅拌排序,?搅拌排序,是冒泡排序的一种变形。不同的地方在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能,原因是冒泡排序只从

以下概念摘自维基百科:

鸡尾酒排序,也叫定向冒泡排序,?鸡尾酒搅拌排序,?搅拌排序,是冒泡排序的一种变形。不同的地方在于从低到高然后从高到低,而冒泡排序则仅从低到高去比较序列里的每个元素。他可以得到比冒泡排序稍微好一点的效能,原因是冒泡排序只从一个方向进行比对(由低到高),每次循环只移动一个项目。 以序列(2,3,4,5,1)为例,鸡尾酒排序只需要访问一次序列就可以完成排序,但如果使用冒泡排序则需要四次。 但是在乱数序列的状态下,鸡尾酒排序与冒泡排序的效率都很差劲,优点只有观念简单这一点 鸡尾酒排序最糟或是平均所花费的次数都是,但如果序列在一开始已经大部分排序过的话,会接近。

其实直接叫它双向冒泡排序就好了。

抖云猫AI论文助手
抖云猫AI论文助手

一款AI论文写作工具,最快 2 分钟,生成 3.5 万字论文。论文可插入表格、代码、公式、图表,依托自研学术抖云猫大模型,生成论文具备严谨的学术专业性。

抖云猫AI论文助手 146
查看详情 抖云猫AI论文助手
//如果代码行比较长,可以横向拖动下
function cocktailSort($arr,$sort='asc'){
    $sorted = false;
    $bottom = 0;
    $top = count($arr)-1;
    while(!$sorted){
        $sorted = true;
        for ($i = $bottom; $i < $top; $i++) {
            if(($arr[$i]>$arr[$i+1]&&$sort=='asc')||($arr[$i]<$arr[$i+1]&&$sort=='desc')){
                $temp = $arr[$i+1];
                $arr[$i+1] = $arr[$i];
                $arr[$i] = $temp;
                $sorted = false;//需要交换元素说明数组还没有被排序好
            }
        }
        //然后再反向走一趟
        //$top-1是因为拥有最大(小)值的元素已经在数组的顶端位置了
        $top--;
        for ($i = $top; $i > $bottom; $i--) {
            if(($arr[$i]<$arr[$i-1]&&$sort=='asc')||($arr[$i]>$arr[$i-1]&&$sort=='desc')){
                $temp = $arr[$i-1];
                $arr[$i-1] = $arr[$i];
                $arr[$i] = $temp;
                $sorted = false;
            }
        }
        //$bottom+1是因为是拥有最小(大)值得元素已经在数组的底部
        $bottom++;
    }
    return $arr;
}
登录后复制
相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号