排序算法

2020-07-19  本文已影响0人  darkTi

一、快速排序

思想

  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))
上一篇 下一篇

猜你喜欢

热点阅读