1.快速排序
class QuickSort {
  Sort(originalArray) {
    // 复制 originalArray 数组防止它被修改
    const array = [...originalArray];

    // 如果 originalArray 数组元素个数 <=1,就不需要排序了,直接返回
    if (array.length <= 1) {
      return array;
    }

    // 初始化左数组和右数组
    const leftArray = [];
    const rightArray = [];

    // 取出 originalArray 数组中的第一个元素作为中间比较值
    const pivotElement = array.shift();
    const centerArray = [pivotElement];

    // 把 originalArray 数组拆分成左、中、右三个数组
    while (array.length) {
      const currentElement = array.shift();

      if (currentElement == pivotElement) {
        centerArray.push(currentElement);
      } else if (currentElement < pivotElement) {
        leftArray.push(currentElement);
      } else {
        rightArray.push(currentElement);
      }
    }

    // 递归对左、右数组进行排序
    const leftArraySorted = this.Sort(leftArray);
    const rightArraySorted = this.Sort(rightArray);

    // 最后把排好序的左、中、右数组拼接起来,并返回
    return leftArraySorted.concat(centerArray, rightArraySorted);
  }
}

更多相关文章

  1. ES6学习笔记二之数组的扩展
  2. 在关联数组中移动元素[重复]
  3. JavaScript——数组(三)数组方法汇总
  4. 如何通过ajax将javascript数组传递给YII动作
  5. 在Javascript中将带有空格的字符串数组转换为小写,然后在Webkit中
  6. 返回指定时间段相同间隔数组
  7. JavaScript数组中的唯一计数,按计数排序
  8. Javascript sort()不适用于Chrome中超过10个对象的数组
  9. 获取JavaScript数组元素的最大长度

随机推荐

  1. Android开发小技巧1
  2. Android: TextView with border 带边框的
  3. android studio常见错误及异常处理记录
  4. android连接网络
  5. ANDROID笔记:Button的简单使用
  6. Android 唤醒锁
  7. Android中读取短信信息
  8. Android Content Framework(1)Concept
  9. android本地定时通知
  10. Android Studio中断开SVN连接