javascript 排序算法

Posted rosendolu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 排序算法相关的知识,希望对你有一定的参考价值。

冒泡排序算法

 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 排序算法的主要内容,如果未能解决你的问题,请参考以下文章

用JavaScript实现排序算法

总结:大厂面试常考手撕代码 —— JavaScript排序算法(冒泡排序选择排序插入排序快速排序)

JavaScript算法(冒泡排序选择排序与插入排序)

7种基本排序算法的Java实现

JavaScript 数据结构与算法之美 - 归并排序快速排序希尔排序堆排序

算法排序之堆排序