美文网首页
冒泡排序,选择排序,插入排序,希尔排序

冒泡排序,选择排序,插入排序,希尔排序

作者: 肉肉肉肉_包 | 来源:发表于2019-07-30 20:43 被阅读0次

    冒泡排序原理:比较相邻两个元素的大小,左边大于右边则交换两个元素位置(默认从小到大排序)

    function bubbleSort(arr){
        for(var i=0;i<arr.length-1;i++){
          for(var j=0;j<arr.length-1-i;j++){
            if(arr[j]>arr[j+1])
              [arr[j],arr[j+1]] = [arr[j+1],arr[j]];
          }
        }
        return arr;
      }
    
      var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
      console.log(bubbleSort(arr));
    

    选择排序算法原理:将未排序的数中最大(小)的挑出来放到最后,再从剩下的数按照此方法进行排序。

    function selectionSort(arr){
        let minIndex;
        for(let i=0;i<arr.length-1;i++){
          minIndex = i;
          for (let j = i+1; j < arr.length-1; j++) {
            if(arr[j]<arr[minIndex])
              minIndex = j;
          }
          [arr[minIndex],arr[i]] = [arr[i],arr[minIndex]];
        }
        return arr;
      }
    
      var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
      console.log(selectionSort(arr));
    

    插入排序基本原理:将元素一个个插入到已经排好序的数组里

     function insertionSort(arr){
        for(var i=1;i<arr.length;i++){    //外层循环从1开始,默认arr[0]是有序的
          //寻找元素arr[i]合适的插入位置
          for(var j=i;j>0;j--){
            if(arr[j] < arr[j-1])
              [arr[j],arr[j-1]] = [arr[j-1],arr[j]];
            else
              break;
          }
        }
        return arr;
      }
      var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
      console.log(insertionSort(arr));
    

    希尔排序基本原理:将整个待排序的序列分成若干个子序列,在每个子序列里进行插入排序,等到整个序列基本有序时,对整个序列进行直接插入排序

     function shellSort(arr) {
        var len = arr.length,
            temp,
            gap = 1;
        while(gap < len/3) {          //动态定义间隔序列
            gap = gap*3+1;
        }
        for (gap; gap > 0; gap = Math.floor(gap/3)) {
          for (var i = gap; i < len; i++) {
            temp = arr[i];
            for (var j = i-gap; j >= 0 && arr[j] > temp; j -= gap) {
              arr[j+gap] = arr[j];
            }
            arr[j+gap] = temp;
          }
        }
        return arr;
      }
      var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
      console.log(shellSort(arr));
    

    相关文章

      网友评论

          本文标题:冒泡排序,选择排序,插入排序,希尔排序

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