js几种排序的实现

Posted blancher

tags:

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

1、冒泡排序

思想:比较相邻的前后两个数据,如果前面的大于后面的,就交换两个数据位置,知道遍历完数组,排序完成。

实现:

function bubbleSort(arr) {
    for(var i = 0;i < arr.length-1;i++) {
         for(var j;j < arr.length-1;j++) {
             if(arr[j] > arr[j+1]){
                 var temp = arr[j];
                 arr[j] = arr[j+1];
                 arr[j+1] = temp;
             }
         }
    }
    return arr;
}
console.log(bubbleSort([5,9,8,6,2,3,7])

2、选择排序

思想:第一次遍历数组找出最小的值与第一个元素交换,第二次遍历N-1个数据,找出最小的值与第二个元素交换,直到排序完成。

实现:

function selectSort(arr){
  var min,temp;
  for(var i=0;i<arr.length-1;i++) {
    min = i;
    for(var j = i+1;j < arr.length;j++) {
      if(arr[j] < arr[min])
          min = j;
    }
  temp = arr[i];
  arr[i] = arr[min];
  arr[min] = temp;
  }
  return arr;
}
console.log(selectSort([6,5,2,4,3,7]))

3、快速排序

思想:先从数组找设置一个基准数(任意,一般取中间);将比基准数打的全放在它的右边,小的放在左边;在对左右两个区间重复第1、2步,直到区间各剩一个数。

实现:

function quickSort(arr) {
  if(arr.length <= 1){
    return arr;
  }
  var pivoIndex = Math.floor(arr.length / 2);//取中间数为基数
  var pivot = arrr.splice(pivoIndex,1)[0]; //取基准点值,splice(index,1)函数可以返回数组中被删除的那个数
   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])
      }
   }
  //递归执行以上操作,对左右两个数组进行操作,直到数组长度<=1
    return quickSort(left).concat([pivot],quick(right))
}

4、插入排序

思想:

从第一个元素开始,该元素可以认为已经被排序;
取出下一个元素,在已经排序的元素序列中从后向前扫描;
如果该元素(已排序)大于新元素,将该元素移到下一位置;
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
将新元素插入到该位置后;
重复步骤2~5。

function insertSort(arr){
            var len = arr.length;
             for (var i = 1; i < len; i++) {
              var key = arr[i];
             var j = i - 1;
              while (j >= 0 && arr[j] > key) {
                  arr[j + 1] = arr[j];
                  j--;
              }
             arr[j + 1] = key;
         }
        return arr;
        }

 

以上是关于js几种排序的实现的主要内容,如果未能解决你的问题,请参考以下文章

a标签调用js的几种方法

Java实现几种排序

几种排序方式的java实现(01:插入排序,冒泡排序,选择排序,快速排序)

java实现几种常用排序:选择排序

原生JS数组去重的几种方法

JAVA中有哪几种常用的排序方法?每个排序方法的实现思路是如何的?每个方法的思想是啥??