最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 浑元功法:排序

    正文概述 掘金(宫脇咲良的绯闻男友)   2020-11-27   937

    冒泡排序

    基本原理

    1. 比较相邻的元素,如果第一个比第二个大,就交换
    2. 依次比较相邻的元素,直到比较完成
    3. 重复步骤1-步骤2的操作

    演示

    浑元功法:排序

    复杂度

    平均 最坏 最好 稳定性 空间复杂度
    O(n^2) O(n^2) O(n) 稳定 O(1)
    • 最好情况:正序数组

    代码实现

    function bubbleSort(arr) {
      for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr.length-1-i; j++) {
          if (arr[j] > arr[j+1]) {
            var temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
          }
        }
      }
    }

    选择排序

    基本原理

    1. 遍历数组,把最小的元素找出来,放在首部
    2. 把剩下的元素看成一个新的数组
    3. 重复步骤1-步骤2的操作,直到完成排序

    演示

    浑元功法:排序

    复杂度

    平均 最坏 最好 稳定性 空间复杂度
    O(n^2) O(n^2) O(n^2) 不稳定 O(1)
    • 最好情况,数组已经排序好了,但是还是需要比较n(n-1)/2次

    代码实现

    function selectionSort(arr) {
      var temp = 0;
      for (var i = 0; i < arr.length-1; i++) {
        var minIndex = i;
        for (var j = i+1; j < arr.length; j++) {
          if (arr[minIndex] > arr[j]) {
            minIndex = j;
          }
        }
        if (minIndex != i) {
          temp = arr[minIndex];
          arr[minIndex] = arr[i];
          arr[i] = temp;
        }
      }
    }

    快速排序

    基本原理

    1. 对于一个未排序的数组,取一个元素作为基准值pivotKey
    2. 将小于该基准值的元素放在左边,大于该基准值的元素放在右边
    3. 以该基准值为中间,将数组分为左右两部分
    4. 对左右两部分分别进行步骤1-步骤3的操作,直到完成排序

    演示

    浑元功法:排序

    复杂度

    平均 最坏 最好 稳定性 空间复杂度
    O(nlog(n)) O(n^2) O(nlog(n)) 不稳定 O(log(n))
    • 最坏情况:正序排列的数组
    • 最好情况:每一次分割都能平分

    代码实现

    function quickSort(arr) {
      if (arr.length < 2) {
        return arr;
      } else {
        var pivotKey = arr[0];
        var pivotArr = [];
        var lowArr = [];
        var highArr = [];
        arr.forEach(current => {
          if (current == pivotKey) {
            pivotArr.push(current);
          } else if (current > pivotKey) {
            highArr.push(current);
          } else {
            lowArr.push(current);
          }
        });
        return quickSort(lowArr).concat(pivotArr).concat(quickSort(highArr));
      }
    }

    归并排序

    基本原理

    1. 将数组分为两个数组
    2. 对分割好的数组进行步骤1的操作
    3. 将拆分好的数组进行排序,形成新的数组
    4. 将新的数组合并

    演示

    浑元功法:排序

    复杂度

    平均 最坏 最好 稳定性 空间复杂度
    O(nlog(n)) O(nlog(n)) O(nlog(n)) 稳定 O(n+log(n))

    代码实现

    function mergeSort(arr) {
      if (arr.length == 1) {
        return arr;
      }
      const length = arr.length;
      const middle = Math.floor(length/2);
      const left = arr.slice(0, middle);
      const right = arr.slice(middle);
      return merge(mergeSort(left), mergeSort(right));
    }

    function merge(left, right) {
      const result = [];
      let leftIndex = 0;
      let rightIndex = 0;
      while (leftIndex < left.length && rightIndex < right.length) {
        if (left[leftIndex] < right[rightIndex]) {
          result.push(left[leftIndex]);
          leftIndex++;
        } else {
          result.push(right[rightIndex]);
          rightIndex++;
        }
      }
      return result.concat(left.slice(leftIndex)).concat(right)
    }

    起源地下载网 » 浑元功法:排序

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元