• 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

  • 相关阅读:
    9.8
    9.6
    9.5
    树状数组
    逆序对
    tab标签切换(无炫效果,简单的显示隐藏)
    JQuery 的选择器
    简单的JQuery top返回顶部
    Hello Word!
    java Data 计算自己活了多少天
  • 原文地址:https://www.cnblogs.com/mengfangui/p/10287439.html
Copyright © 2020-2023  润新知