美文网首页
不积跬步之鸡尾酒排序

不积跬步之鸡尾酒排序

作者: 雨飞飞雨 | 来源:发表于2021-05-26 22:30 被阅读0次

鸡尾酒排序是从冒泡排序又优化升级而来。
比如如下场景:

[2,3,4,5,6,7,8,1,9]

如果使用冒泡排序,因为只需要移动1这一个位置,却需要轮回8次。

冒泡排序的每一轮都是从左到右比较元素,进行单向的位置交换。

而鸡尾酒排序则是双向交换,它先从左到右,接着又从右到左,然后在从左到右。

好,废话不多说,上代码:

function CocktailSort(array){
        let tmp = 0;
        for(let i = 0;i<array.length / 2; i++){
                //有序标记,每一轮的初始值都是true
                let isSorted = true;
                //奇数轮,从左向右比较和交换
                for(let j = i;j<array.length-i-1;j++){
                        if(array[j] > array[j+1]){
                             tmp = array[j];
                             array[j] = array[j+1];
                             array[j+1] = tmp;
                             //有元素交换,所以不是有序的,标记变为false
                             isSorted = false;
                     }
                }
                
                if(isSorted){
                        break;
                }
                
                //在偶数轮之前,将isSorted重新标记为true
                isSorted = true;
                //偶数轮,从右向左重新标记为true.
                for(let j = array.length - i -1;j>i;j--){
                        if(array[j] <array[j-1]){
                                tmp = array[j-1];
                                array[j] = array[j-1];
                                array[j-1] = tmp;
                                //因为元素交换,所以不是有序的,标记变为false
                                isSorted = false;
                        }
                }
                if(isSorted){
                        break;
                }
                
        }
}

相关文章

  • 不积跬步之鸡尾酒排序

    鸡尾酒排序是从冒泡排序又优化升级而来。比如如下场景: 如果使用冒泡排序,因为只需要移动1这一个位置,却需要轮回8次...

  • 不积跬步之快速排序

    快速排序使用了分治思想来实现。 和冒泡排序一样,快速排序也属于交换排序,通过元素直接的比较和交换位置来达到排序的目...

  • 不积跬步之选择排序

    选择排序 假如我们有一组歌的数据,我们需要按照播放量从大往小排序。最简单的做法就是,先从这组数据里找到最大的那个,...

  • 不积跬步之冒泡排序及优化

    冒泡排序 一句话描述:相邻的两个元素相比较,大的那个移动到右侧,然后进行数组长度-1轮后,就排好序了。 冒泡排序的...

  • 不积跬步之计数排序

    之前的排序都是通过比较来完成的,例如冒泡排序和快速排序。 两个值比较,如果大的值,就交换。 而计数排序则是利用里字...

  • 不积跬步

    2018/10/25 星期四 晴 没想到二姐的高价小收音机比手机的辐射要强,放在床边睡觉,...

  • 不积跬步

    “不积跬步无以至千里”常用来激励。 可在自己身上发掘这句名言,却只有垃圾、肥肉和慢。 一个上午,断断续续收拾了两个...

  • 不积跬步

    生活中看起不起眼的事情,对一些人来说就是财富机遇 朋友在我们单位上班,也属于从别的单位挖过来的,老板慧眼识珠,两人...

  • 点滴积累成就精彩演讲

    冰冻三尺,非一日之寒。 ——王充不积跬步,无以...

  • 晨间日记

    不登高山,不知天之高也; 不临深溪,不知地之厚也。 不积跬步,无以至千里; 不积小流,无以成江海。 ​​​

网友评论

      本文标题:不积跬步之鸡尾酒排序

      本文链接:https://www.haomeiwen.com/subject/kdvlsltx.html