几种经典排序算法的JS实现方法

作者:几种经典排序算法的JS实现方法 来源:未知 2025-03-30 20:59   阅读:

一.冒泡排序functionBubbleSort(array){varlength=array.length;for(vari=length-1;i>0;i--){//用于缩小范围for(varj=0;jarray[j+1]){vartemp=array[j];array[j]=array

一.冒泡排序

function BubbleSort(array) {
  var length=array.length;
  for (var i=length - 1; i > 0; i--) { //用于缩小范围
    for (var j=0; j < i; j++) { //在范围内进行冒泡,在此范围内最大的一个将冒到最后面
      if (array[j] > array[j+1]) { 
        var temp=array[j];
        array[j]=array[j+1];
        array[j+1]=temp;
      }
    }
    console.log(array);
    console.log("-----------------------------");
  }
  return array;
}


var arr=[10,9,8,7,7,6,5,11,3];
var result=BubbleSort(arr);
console.log(result); 

二.选择排序

function SelectionSort(array) {
  var length=array.length;
  for (var i=0; i < length; i++) { //缩小选择的范围
    var min=array[i]; //假定范围内第一个为最小值
    var index=i; //记录最小值的下标
    for (var j=i + 1; j < length; j++) { //在范围内选取最小值
      if (array[j] < min) {
        min=array[j];
        index=j;
      }
    }
    if (index !=i) { //把范围内最小值交换到范围内第一个
      var temp=array[i];
      array[i]=array[index];
      array[index]=temp;
    }
    console.log(array);
    console.log("---------------------");
  }
  return array;
}

var arr=[ 1, 10, 100, 90, 65, 5, 4, 10, 2, 4 ];
var result=SelectionSort(arr);
console.log(result);

三.插入排序

function InsertionSort(array) {
  var length=array.length;
  for (var i=0; i < length - 1; i++) {
    //i代表已经排序好的序列最后一项下标
    var insert=array[i+1];
    var index=i + 1;//记录要被插入的下标
    for (var j=i; j >=0; j--) {
      if (insert < array[j]) {
        //要插入的项比它小,往后移动
        array[j+1]=array[j];
        index=j;
      }
    }
    array[index]=insert;
    console.log(array);
    console.log("-----------------------");
  }
  return array;
}

var arr=[100,90,80,62,80,8,1,2,39];
var result=InsertionSort(arr);
console.log(result);

四.希尔排序

function ShellSort(array) {
  var length=array.length;
  var gap=Math.round(length / 2);
  while (gap > 0) {
    for (var i=gap; i < length; i++) {
      var insert=array[i];
      var index=i;
      for (var j=i; j >=0; j-=gap) {
        if (insert < array[j]) {
          array[j+gap]=array[j];
          index=j;
        }
      }
      array[index]=insert;
    }
    console.log(array);
    console.log("-----------------------");
    gap=Math.round(gap/2 - 0.1);
  }
  return array;
}

var arr=[ 13, 14, 94, 33, 82, 25, 59, 94, 65, 23, 45, 27, 73, 25, 39, 10 ];
var result=ShellSort(arr);
console.log(result); 

五.归并排序

function MergeSort(array) {
  var length=array.length;
  if (length <=1) {
    return array;
  } else {
    var num=Math.ceil(length/2);
    var left=MergeSort(array.slice(0, num));
    var right=MergeSort(array.slice(num, length));
    return merge(left, right);
  }
}

function merge(left, right) {
  console.log(left);
  console.log(right);
  var a=new Array();
  while (left.length > 0 && right.length > 0) {
    if (left[0] <=right[0]) {
      var temp=left.shift();
      a.push(temp);
    } else {
      var temp=right.shift();
      a.push(temp);
    }
  }
  if (left.length > 0) {
    a=a.concat(left);
  }
  if (right.length > 0) {
    a=a.concat(right);
  }
  console.log(a);
  console.log("-----------------------------");
  return a;
}

var arr=[ 13, 14, 94, 33, 82, 25, 59, 94, 65, 23, 45, 27, 73, 25, 39, 10 ];
var result=MergeSort(arr);
console.log(result);

六.快速排序

function QuickSort(array) {
  var length=array.length;
  if (length <=1) {
    return array;
  } else {
    var smaller=[];
    var bigger=[];
    var base=[array[0]];
    for (var i=1; i < length; i++) {
      if (array[i] <=base[0]) {
        smaller.push(array[i]);
      } else {
        bigger.push(array[i]);
      }
    }
    console.log(smaller.concat(base.concat(bigger)));
    console.log("-----------------------");
    return QuickSort(smaller).concat(base.concat(QuickSort(bigger)));
  }
}


var arr=[ 8, 10, 100, 90, 65, 5, 4, 10, 2, 4 ];
var result=QuickSort(arr);
console.log(result);

以上这篇几种经典排序算法的JS实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • js交换排序 冒泡排序算法(Javascript版)
  • js算法中的排序、数组去重详细概述
  • Javascript中的常见排序算法
  • JS实现的冒泡排序,快速排序,插入排序算法示例
  • JS随机洗牌算法之数组随机排序
  • JavaScript数组排序的六种常见算法总结
  • js三种排序算法分享
  • JS实现最简单的冒泡排序算法
  • JS实现常见的查找、排序、去重算法示例
  • 如何利用JavaScript实现排序算法浅析
分享给小伙伴们:
几种经典排序算法的JS实现方法:如果本文侵犯了您的权利, 请联系本网立即做出处理,谢谢。
下一篇:没有了
几种经典排序算法的JS实现方法相关文章
栏目最新