zoukankan      html  css  js  c++  java
  • 实现高效率的冒泡排序

    // 自己实现冒泡排序最简单的方式就是使用双层循环
    var arr = [10,2,5,7,8,10,10,20,10,18,20,89,6,7,52]
    // 外层循环是我们需要将每一个数列都排序一次,那么需要排序的数列就是arr.length - 1次
    for(var i = 0; i < arr.length - 1 ; i++){
        for(var j = 0; j < arr.length - 1 -i; j++){
            if(arr[j] > arr[j+1]){
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp
            }
        }
    }
    console.log(arr)
    // 上面效率是相对较低的,可以参考二分查找以及递归的思路我们实现效率高的排序方法
    function quickSort(start,end){
        if(start >= end){
            return
        }
        // 二分查找的标志
        var pivot = arr[start];
        var left = start;
        var right = end;
        // 循环查找当左右不重合时我们交换left和right的位置
        while(left != right){
            // 循环如果right比标志小那么停止并记录当前位置
            while(right > left && arr[right] >= pivot){
                right--
            }
            //循环如果left比标志大那么停止并记录当前位置
            while(left < right && arr[left] <= pivot){
                left++
            }
            // 交换两者位置
            if(left < right){
            var temp = arr[left]
            arr[left] = arr[right]
            arr[right] = temp
            }
    
        }
        // 如果right = left 那么我们将pivot放于中间位置
            arr[start] = arr[left];
            arr[left] = pivot;
            quickSort(start , left - 1);
            quickSort(right + 1,end);
    
    }
    
    quickSort(0,arr.length - 1)
    console.log(arr)
  • 相关阅读:
    【SqlSugarCore】SqlSugarScope的异步上下文问题
    web系统国际化思路
    mac iterm2 报错“iterm2_precmd:type:50”解决
    Atcoder 123C 1, 2, 3
    Atcoder 123D Yet Another Sorting Problem
    Atcoder 124F Chance Meeting
    Atcoder 212D Querying Multiset
    Atcoder 212E Safety Journey
    Atcoder 212F Greedy Takahashi
    Atcoder 212G Power Pair
  • 原文地址:https://www.cnblogs.com/tengx/p/11904759.html
Copyright © 2011-2022 走看看