美文网首页
排序算法

排序算法

作者: 前端咸蛋黄 | 来源:发表于2019-05-13 19:03 被阅读0次
  1. 冒泡排序
function bubbleSort(arr){
    for(let x=0;x<arr.length;x++){
        for(let y=0;y<arr.length-1;y++){
            if(arr[y]>arr[y+1]){
                [arr[y],arr[y+1]] = [arr[y+1],arr[y]]
            }
        }
    }
    return arr
}
  1. 选择排序
function selectionSort(arr){
    for(let x = 0; x<arr.length; x++){
        let minIndex = x
        for(let y = x+1; y<arr.length; y++){
            if(arr[y]<arr[minIndex]){
                minIndex = y
            }
        }
        [arr[x],arr[minIndex]] = [arr[minIndex],arr[x]]
    }
    return arr
}
  1. 插入排序
function insertSort(arr){
    for(let x=1; x<arr.length; x++){
        for(let y=x; y>0; y-- ){
            if(arr[y]<arr[y-1]){
                [arr[y-1],arr[y]] = [arr[y],arr[y-1]]
            }else{
                break
            }
        }
    }
    return arr
}
  1. 归并排序
function mergeSort(arr){
    if(arr.length<2){
        return arr
    }
    let middle = parseInt(arr.length/2)
    let left = arr.slice(0,middle)
    let right = arr.slice(middle)
    function merge(left,right){
        let result = []
        while(left.length && right.length){
            if(left[0]<=right[0]){
                result.push(left.shift())
            }else{
                result.push(right.shift())
            }
        }
        while(left.length){
            result.push(left.shift())
        }
        while(right.length){
            result.push(right.shift())
        }
        return result
    }
    return merge(mergeSort(left), mergeSort(right))
}
  1. 快速排序
var quickSort = function(arr) {
  if (arr.length < 2) {
        return arr
    }
  let middle = arr.splice(parseInt(arr.length / 2),1)[0]
  var left = []
  var right = []
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < middle) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([middle], quickSort(right));
}
  1. 计数排序
function countingSort(array) {
    var len = array.length,
        B = [],
        C = [],
        min = max = array[0];
    for (var i = 0; i < len; i++) {
        min = min <= array[i] ? min : array[i];
        max = max >= array[i] ? max : array[i];
        C[array[i]] = C[array[i]] ? C[array[i]] + 1 : 1;
    }
    for (var j = min; j < max; j++) {
        C[j + 1] = (C[j + 1] || 0) + (C[j] || 0);
    }
    for (var k = len - 1; k >= 0; k--) {
        B[C[array[k]] - 1] = array[k];
        C[array[k]]--;
    }
    return B;
}

相关文章

  • java实现快速排序、归并排序、希尔排序、基数排序算法...

    快速排序算法 归并排序算法 希尔排序算法 基数排序算法

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 前端算法学习-第一篇

    冒泡排序算法 冒泡排序算法是最慢的排序算法之一,也是最容易实现的排序算法。之所以叫冒泡排序是因为使用这种算法排序时...

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 浅谈排序算法

    排序算法有很多种,今天先谈谈一些简单的排序算法。包括桶排序、冒泡排序和快速排序算法。后期总结各种排序算法。 桶排序...

  • 线性排序

    桶排序、计数排序、基数排序 一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法...

  • 算法4:插入排序和选择排序算法的比较

    排序算法列表电梯: 选择排序算法:详见 《算法4》2.1 - 选择排序算法(Selection Sort), Py...

网友评论

      本文标题:排序算法

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