JS基础排序

2019-07-24  本文已影响0人  Shadow_4d48

选择排序

选择排序,顾名思义,始终选择第i个元素与数组其他未排序的元素进行比较,遇到比第i个元素小的,就进行交换,保持第i个元素是目前未排序的元素中最小的。
第一次循环,将最小的排到第一位,第二次循环,将第二小的排到第二位,以此类推

function selectSort(arr){
            var len = arr.length;//存储数组长度,以免循环中多次调用
            var minIndex;
            for(var i=0; i<len; i++){
                minIndex = i;//初始最小元素下标为i
                for(var j=i+1; j<len; j++){
                    if(arr[j]<arr[minIndex]){
                        minIndex = j;//遇到更小元素,修改minIndex为其下标
                    }
                }
                [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
                //es6解构赋值,转换两个元素的值
            }
            return arr;
        }

冒泡排序

冒泡排序,比较前后两个元素大小,符合条件即交换,每执行完一轮冒泡都可以将最大值排到最后

function bubbleSort(arr){
            var len = arr.length;
            for(var i=0; i<len; i++){
                for(var j=0; j<len-i-1; j++){
                    if(arr[j]>arr[j+1]){
                        [arr[j], arr[j+1]] = [arr[j+1], arr[j]];
                        //es6解构赋值,转换两个元素的值
                    }
                }
            }
            return arr;
        }

插入排序

插入排序,始终将左侧看成一个已经排好的序列,循环之前保存需要插入的元素,与左侧序列逐一比较,符合条件,即可插入;不符合条件则将左侧序列往后移

function insertSort(arr){
            //将左侧看成一个已经排序好的数组
            var len = arr.length;
            for(var i=1; i<len; i++){
                var temp = arr[i];//保持需要插入的元素
                for(var j=i-1; j>=0; j--){
                    if(arr[j]>temp){//不可插入,将元素向后移
                        arr[j+1] = arr[j];
                    }else{
                        break;//可插入,直接跳出,终止循环,j停留在可插入位置上
                    }
                }
                arr[j+1] = temp;//插入提取出来的元素,循环结束也会执行,即将元素插入到数组最前面
            }
            return arr;
        }
上一篇下一篇

猜你喜欢

热点阅读