zoukankan      html  css  js  c++  java
  • js 中比较常见的排序算法.md

    冒泡排序

    思想: 一次比较元素的的大小,小的与大的进行位置上的调换

    function bubbleSort(arr) {
      for(let i = 0, len = arr.length; i < len; i ++) {
        for(let j = i+1; j < len; j ++) {
          if(arr[i] > arr[j]) {
            let temp = arr[j];
            arr[j] = arr[i];
            arr[i] = temp;
          }
        }
      }
      return arr;
    }
    

    快速排序

    思路:参考某个元素值,将小于他的值,放在左数组中,大于它的值放在右数组中,然后递归进行上一次左右数组的操作,返回合并的数组就是已经排序好的数组。

    function quickSort(arr) {
      if(arr.length <=1 ) {
        return arr;
      }
    
      let leftArr = [],
          rightArr = [],
          quick = arr[0];
    
      for(let i = 0, len = arr.length; i < len; i ++) {
        if (this[i] > quick) {
          this.rightArr.push(this[i]);
        } else {
          this.leftArr.push(this[i])
        }
      }
    
      return [].contat(quickSort(leftArr), [quick], quickSort(rightArr));
    }
    

    插入排序

    思路:

    1. 从第一个元素开始,该元素可以被认为已经被排序
    2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
    3. 如果该元素(已排序)大于新元素,将该元素移到下一个位置
    4. 重复第三个步骤,直到已经找到已排序小于或者等于新元素的位置
    5. 将新元素插在该位置的后面
    6. 重复2-5
    Array.prototype.insertion_sort = function() {
      for(let i = 1, len = this.length; i < len; i ++) {
        for(let j = 0; j < i; j ++) {
          if(this[j] > this[i]) {
            this.splice(j, 0, this[i]);
            this.splice(i+1, 1)
          }
        }
      }
      return this;
    };
    
    [3,5,2,11,1,2].insertion_sort();
    
    
  • 相关阅读:
    sublime配置攻略
    Objective-C代码块语法(block)使用
    [C/C++]_[VS2010来源与UTF8中国字符串转码ANSI问题]
    Android资源管理框架(Asset Manager)简介和学习计划
    ExtJs自学教程(1):从一切API开始
    ORACLE触发特定的解释
    同TextView在不同的显示内容
    :gAudit
    IIS日志分析 MapReduce
    图片存储心得
  • 原文地址:https://www.cnblogs.com/Imflyer/p/7793652.html
Copyright © 2011-2022 走看看