zoukankan      html  css  js  c++  java
  • 常见排序记录

    1、冒泡排序

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

    2、选择排序

    // 每次找出剩余数中最小的一个,替换位置
    function sectionSort(arr) {
      let len = arr.length;
      let minIndex;
      for (let i = 0; i < len; i++) {
        minIndex = i;
        for (let j = i + 1; j < len; j++) {
          if (arr[j] < arr[minIndex]) {
            minIndex = j;
          }
        }
        if (minIndex !== i) {
          [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
        }
      }
      return arr;
    }
    

      

    3、插入排序

    function insertionSort(arr) {
      let len = arr.length;
      let preIndex, current;
      for (let i = 1; i < len; i++) {
        preIndex = i - 1;
        current = arr[i];
        while(preIndex >= 0 && arr[preIndex] > current) {
          arr[preIndex + 1] = arr[preIndex];
          preIndex--;
        }
        arr[preIndex + 1] = current;
      }
      return arr;
    }
    
    function insertion(array) {
      for (let i = 1; i < array.length; i++) {
        for (let j = i - 1; j >= 0 && array[j] > array[j + 1]; j--)
            [arr[j], arr[j + 1]] = arr[j + 1], arr[j]
      }
      return array;
    }

    4、快速排序

    function quickSort(arr) {
      if (arr.length <= 1) {
        return arr;
      }
    
      let left = [];
      let right = [];
      let current = arr.pop();
      let len = arr.length;
    
      for (let i = 0; i < len; i++) {
        if (arr[i] < current) {
          left.push(arr[i]);
        } else {
          right.push(arr[i]);
        }
      }
    
      return quickSort(left).concat(current, quickSort(right));
    }
    

    5、归并排序

    function mergeSort(arr, start, end) {
      if (start > end) {
        return [];
      } else if (start == end) {
        return [arr[start]];
      }
    
      let center = Math.floor((start + end) / 2);
      let left = mergeSort(arr, start, center);
      let right = mergeSort(arr, center + 1, end);
    
      let result = [];
      while (left.length > 0 || right.length > 0) {
        if (left[0] < right[0]) {
          result.push(left.shift());
        } else {
          result.push(right.shift());
        }
    
        if (left.length == 0) {
          result = result.concat(right);
          break;
        } else if (right.length == 0) {
          result = result.concat(left);
          break;
        }
      }
      return result;
    }
    

      

  • 相关阅读:
    教程:在 Visual Studio 中开始使用 Flask Web 框架
    教程:Visual Studio 中的 Django Web 框架入门
    vs2017下发现解决python运行出现‘No module named "XXX""的解决办法
    《sqlite权威指南》读书笔记 (一)
    SQL Server手工插入标识列
    hdu 3729 I'm Telling the Truth 二分图匹配
    HDU 3065 AC自动机 裸题
    hdu 3720 Arranging Your Team 枚举
    virtualbox 虚拟3台虚拟机搭建hadoop集群
    sqlserver 数据行统计,秒查语句
  • 原文地址:https://www.cnblogs.com/itstring/p/12824879.html
Copyright © 2011-2022 走看看