码迷,mamicode.com
首页 > 编程语言 > 详细

js几种排序的实现

时间:2019-03-21 14:23:40      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:二次   key   quic   []   sort   中间   数组   插入排序   cat   

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几种排序的实现

标签:二次   key   quic   []   sort   中间   数组   插入排序   cat   

原文地址:https://www.cnblogs.com/blancher/p/10571359.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!