冒泡排序之我的理解

冒泡排序

步骤:
1, 将列表倒序取值,两两比较,(前一位和后一位),如果前一位小于后一位,将两者置换
2,每交换一轮,即每轮的最小值被移到最首位,开始下一轮比较前,将比较值的下标前移

问题:

为什么要倒序两两比较?
回想第一个步骤,结果会将每一轮比较的最小值移动到首位,这样最终结果最小的数会跑到最前面,所以举一反三,正序也可以,不过是要将最大往后沉

为什么每一轮比较后下标要往前移?
因为每一轮比较后,这轮的最小值都会移动到最首位,第二轮已经没有比的需要,当然可以再比较,只是没有必要

优化

如果数据在比较一轮后已经排好序,但是按照原有的流程还是会继续比较下去,可以判断是否发生交换,如果没有发生交换,停止循环

想明白后,开始写

         bubbleSort:function(){
            var temp ; // 临时变量
            var arr = [90,10,2,3,9,15];
            for(var i = 0; i< arr.length; i++){
                for(var j = arr.length - 1; j > i ; j--){
                        if(arr[j] < arr[j - 1]){
                            temp = arr[j];
                            arr[j] = arr[j-1];
                            arr[j-1] = temp;
                        }
                }
            }

            console.log("临时变量",arr);
            
        }
    原文作者:岁月留痕
    原文地址: https://www.jianshu.com/p/2a3572c8fd5a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞