冒泡排序之我的理解

作者: 岁月留痕 | 来源:发表于2018-08-20 18:58 被阅读2次

    冒泡排序

    步骤:
    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.haomeiwen.com/subject/mpaliftx.html