美文网首页
JS基础排序

JS基础排序

作者: Shadow_4d48 | 来源:发表于2019-07-24 15:20 被阅读0次

    选择排序

    选择排序,顾名思义,始终选择第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;
            }
    

    相关文章

      网友评论

          本文标题:JS基础排序

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