JavaScript

| 算法

2019-11-01  本文已影响0人  Hemingway_AT

冒泡排序

逻辑:极值冒泡,迭代;通过设置正序标识变量,优化排序计算

function bubbleSort(arrlist) {
    var count = arrlist.length - 1;// 最大外循环次数
    console.log('最大排序次数:' + count);
    
    for (var i = 0;i < count; i++) {
        var index = count;// 下标
        var flag = true;// 正序状态标识
        
        for(var j = 0; j < index; j++) {
            if(arrlist[j + 1] < arrlist[j]) {
                flag = false;
                var temp;
                temp = arrlist[j];
                arrlist[j] = arrlist[j + 1];
                arrlist[j + 1] = temp;
            }
        }
        console.log('第' + (i+1) + '次排序:' + arrlist);// 打印本次排序结果
        
        if(flag){
            return arrlist;
        }

        index --;
    }
    return arrlist;
}

var arrlist = [];

for(var i=0; i<9; i++){
    arrlist.push(Math.floor(Math.random()*100));
}

console.log('初始排序:' + arrlist);// 打印初始排序
var sortedArr = bubbleSort(arrlist);
console.log('最终排序:' + sortedArr);

测试:

跑3次脚本.png

快速排序

逻辑:找基准,三分法,使用了递归

var quickSort = function(arraylist) {
  if (arraylist.length <= 1) { return arraylist; }
    // 基准元素的下标
  var pointIndex = Math.floor(arraylist.length / 2);
    // 基准元素
  var point = arraylist.splice(pointIndex, 1)[0];
  var left = [];
  var right = [];
    // 剩余元素分筛
  for (var i = 0; i < arraylist.length; i++){
    if (arraylist[i] < point) {
      left.push(arraylist[i]);
    } else {
      right.push(arraylist[i]);
    }
  }
    // 返回递归计算结果
  return quickSort(left).concat([point], quickSort(right));
};
上一篇 下一篇

猜你喜欢

热点阅读