js 排序算法

Posted web前端开发技术

tags:

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

1、插入排序

原理:

示例代码:

//插入排序
            function insert(a, n) {
                let i, j, temp;
                for(i = 1; i < n; i++) {
                    temp = a[i]
                    for(j = i - 1; j >= 0 && a[j] > temp; j--) {
                        a[j + 1] = a[j]
                    }
                    //找到插入位置
                    a[j + 1] = temp
                }
                return a
            }
            let arr = [8, 4, 7, 1]
            console.log(insert(arr, 4))

2、希尔排序

希尔排序是优化的插入排序,即先分组,再插入排序。

示例代码:

//希尔排序
            function shell(a, n) {
                let i, j, temp, stet;
                //先分组
                for(step = Math.floor(a.length / 2); step >= 1; step = Math.floor(step / 2)) {
                    //i 从step开始
                    for(i = step; i < n; i++) {
                        temp = a[i]
                        for(j = i - step; j >= 0 && a[j] > temp; j = j - step) {
                            a[j + step] = a[j]
                        }
                        //找到插入位置
                        a[j + step] = temp
                    }
                }
                return a
            }
            let arr2 = [8, 4, 7, 1]
            console.log(shell(arr2, 4))

3、冒泡排序

//冒泡排序
            function bubble(a, n) {
                let i, j, temp;
                for (i=n-1;i>=1;i--) {
                    for (j=1;j<i;j++) {
                        if (a[j-1]>a[j]) {
                            temp = a[j-1]
                            a[j-1] = a[j]
                            a[j] = temp
                        }
                    }
                }
                return a
            }
            let arr3 = [8, 4, 7, 1]
            console.log(bubble(arr2, 4))

说明:i指针从后往前。

 4、选择排序

var example=[8,94,15,88,55,76,21,39];
function selectSort(arr){
    var len=arr.length;
    var minIndex,temp;
    for(i=0;i<len-1;i++){
        minIndex=i;
        for(j=i+1;j<len;j++){
            if(arr[j]<arr[minIndex]){
                minIndex=j;
            }
        }
    temp=arr[i];
    arr[i]=arr[minIndex];
    arr[minIndex]=temp;
    }
    return arr;
}
console.log(selectSort(example));

 5、快速排序

http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html

 

var quickSort = function(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));

};

 6、归并排序

https://www.cnblogs.com/chengxiao/p/6194356.html

 

排序算法比较:

 

排序算法比较:https://www.cnblogs.com/end/archive/2011/10/22/2220995.html 

视频:https://ke.qq.com/course/350918#term_id=100417287

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

算法排序之堆排序

快速排序-递归实现

结构-行为-样式-Js排序算法之 快速排序

JS家的排序算法

JS数据结构与算法——插入排序

JS数据结构与算法——插入排序