冒泡,去重,快速排序选择排序几种算法

时间:2022-06-09 22:09:47

arr =[‘9’,’8’,’7’,’6’,’5’,’4’,’3’,’2’,’1’,’0’]

冒泡排序有两个循环外循环循环一次能把乱序数组里的最大值找出来放在相应的位置,内循环循环一次是执行外循环找到这个数的过程的过程
function maopao(arr){
    console.log(arr);
    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 max =arr[j]; arr[j]=arr[j+1]; arr[j+1]=max; }
        }
    }
    alert(arr);
}

去重

先将原数组顺序排列,然后操作顺序排列后的数组这里称为新数组,新数组挨个拿出来放入空数组,每次放入都要和空数组的最后一个比较。如果相同,就不放入空数组。

function num(){
    var arr=['1','4','5','3','1','7','3'];
    var nep =arr.sort();
    var rep=[nep[0]];
    for(var i=0;i<nep.length;i++){
        if(nep[i]!=rep[rep.length-1]){
            rep.push(nep[i])
        }
    }
    alert(rep);
}

快速排序需要三个值,数组里第一个值,最后一个值和中间的一个值。

var quickSort = function(arr) {
    //如果数组里面只有一个值那么就不进行排序
  if (arr.length <= 1) { return arr; }
  //找到中间的index
  var pivotIndex = Math.floor(arr.length / 2);
  //取中间index所对应的的值
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  //把比中间值大的放在right这个数组里,小的放在left这个数组里
  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));
};

选择排序

var p = [2, 4, 3, 1, 7, 5, 6, 9, 6, 0];

function sorrt(ary) {

    for (var i = 0; i < arr.lebgth; i++) {
    //把数组的第一个数放在一个变量中
      var  _min = ary[i]
       var k = i
       //找到数组里还没有排序的值找到最小的那一个
        for (var j = i + 1; j < arr.lebgth; j++) {
            if (_min > ary[j]) {
                _min = ary[j]
                k = j
            }
        }
        ary[k] = ary[i]
        ary[i] = _min
    }
    return ary;
}
pp = sorrt(p)
alert(pp)