美文网首页
排序算法

排序算法

作者: darkTi | 来源:发表于2020-07-19 18:34 被阅读0次

    一、快速排序

    思想

    1. 在数组中,选择一个元素作为基准;
    2. 所有小于基准的元素都移到基准的左边,大于基准的元素移到右边,此时基准元素所处的位置就是它的最终位置;
    3. 之后对基准左边和右边的两块区域,分别不断重复1和2的步骤,直到剩下一个元素位置;
      代码
    
        function sort(arr,left,right) {
            var standard = arr[left];
            var i=left;
            var j=right;
            if(left>=right)return
            while(i<j){
                while(arr[j]>=standard&&j>i)j--;
                while (arr[i]<=standard&&i<j)i++;
                if(i<j){
                    [arr[i],arr[j]] = [arr[j],arr[i]]
                }
            }
            arr[left] = arr[j];
            arr[j]=standard;
            sort(arr,left,i-1);
            sort(arr,i+1,right);
            return arr;
        }   
    var arr=[3,88,44,38,55,12];
    console.log(sort(arr,0,arr.length-1));
    

    二、冒泡排序

    思想

    1. 对每一对相邻的元素进行比较,把较小的元素放在左边,较大的放在右边,从开始的第一对进行到数组最后一对,这样就会把最大的元素放在最后;
    2. 每一次循环都只会确定最大的那个元素,需要进行多次循环;

    代码

       function BubbleSort(arr) {
            for(var i=0;i<arr.length;i++){
                for(var j=0;j<arr.length-1-i;j++){
                    if(arr[j]>arr[j+1]){
                        [arr[j],arr[j+1]] = [arr[j+1],arr[j]]
                    }
                }
            }
            return arr
        }
    var arr=[3,88,44,38,55,12]
    console.log(BubbleSort(arr))
    

    三、选择排序

    思想

    1. 在未排序的数组中,每次找到最小(大)的元素,把它放到起始位置;
    2. 在剩余的未排序的数组中,继续找最小的元素,把它放到这次数组的起始位置,直到只剩一个元素;

    代码

    function quickSort(arr) {
        for(var i=0;i<arr.length;i++){
            for(var j=i+1;j<arr.length;j++){
                if(arr[j]<arr[i]){
                  [arr[i],arr[j]] = [arr[j],arr[i]]
                }
            }
        }
          return arr
        }
    var arr=[3,88,44,38,55,12]
    console.log(quickSort(arr))
    

    相关文章

      网友评论

          本文标题:排序算法

          本文链接:https://www.haomeiwen.com/subject/rjcwvqtx.html