首页 > 编程语言 > 详细

javascript 排序算法

时间:2019-05-03 23:20:37      阅读:116      评论:0      收藏:0      [点我收藏+]

冒泡排序算法

 function sort_bubble(arr,fn) {
   let length = arr.length;
   for(let x = 0; x < length; x ++) {
     for (let y = x + 1; y < length; y ++) {
       [arr[x],arr[y]] = fn(arr[x],arr[y])?[arr[y],arr[x]]:[arr[x],arr[y]]; 
     }
   }
   return arr;
 } 

// 交换数组位置
function swap(a,b) {
 return  [a,b] = [b,a];
}

 function ascending(x,y) {
   return x > y;
 }
 function desending(x,y) {
   return x < y;
 }

选择排序

/**
 * @param {array} array 传入要排序的数组
 */
function selectionSort(array) {

  const len = array.length;

  for (let i = 0; i < len; i++) {

    let minIndex = i;

    for (let j = i + 1; j < len; j++) {

      if (array[j] < array[minIndex]) {

        minIndex = j;
      }
    }
    // 最小元素已经是第一个就不用交换
    if( i !== minIndex) {
      // let tmp = array[i];
      // array[i] = array[minIndex];
      // array[minIndex] = tmp ;

      [array[i],array[minIndex]] = [array[minIndex],array[i]];
    }
  }
  return array;
}

插入排序

/**
 * 
 * @param {number} array 传入排序的数组 
 */
function insertionSort(array) {
  for (let i = 1, len = array.length; i < len; i++) {
    const temp = array[i];
    let j = i - 1;

    while (array[j] > temp) {
      array[j + 1] = array[j];
      array[j] = temp;
    }
  }

  return array;
}

快速排序

function quickSort(arr) {

    if (arr.length <= 1) { return arr; }
  
    var pivotIndex = Math.floor(arr.length / 2);
  
    var pivot = arr.splice(pivotIndex, 1)[0];
  
    var left = [];
  
    var right = [];
  
    for (var i = 0; i < arr.length; i++){
  
      if (arr[i] < pivot) {
  
        left.push(arr[i]);
  
      } else {
  
        right.push(arr[i]);
  
      }
  
    }
  
    return quickSort(left).concat([pivot], quickSort(right));
  
  };

javascript 排序算法

原文:https://www.cnblogs.com/rosendolu/p/10806966.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!