JavaScript经典排序算法

冒泡排序

for循环

1
var numbers = [44, 26, 69, 28, 78, 456, 85, 84, 9, 6, 66];
2
function bubbleSort(items) {
3
  var len = items.length, i, j, stop;
4
  var isSort = true;
5
  // 外层循环:控制循环次数,每次找到一个最大值
6
  for (i = 0; i < items.length; i++) {
7
    //内层循环:控制比较的次数,判断两个数的大小,把大的数往后移。小的数往前移动
8
    for (j = 0, stop = len - i; j < stop; j++) {
9
      // 两两比较
10
      if (items[j] > items[j + 1]) {
11
        // 交换位置
12
        isSort = false;
13
        var tmp = items[j];
14
        items[j] = numbers[j + 1];
15
        numbers[j + 1] = tmp;
16
      }
17
    }
18
    if (isSort) {
19
      break;
20
    }
21
  }
22
  return items;
23
}
24
console.log(bubbleSort(numbers));

ES6解构赋值

1
let numbers = [44, 26, 69, 28, 78, 456, 85, 84, 9, 6, 66];
2
const bubbleSort = (items) => {
3
  let len = items.length, i, j, stop;
4
  let isSort = true;
5
  for (i = 0; i < items.length; i++) {
6
    for (j = 0, stop = len - i; j < stop; j++) {
7
      if (items[j] > items[j + 1]) {
8
        isSort = false;
9
        [items[j], items[j + 1]] = [items[j + 1], items[j]];
10
      }
11
    }
12
    if (isSort) {
13
      break;
14
    }
15
  }
16
  return items;
17
};
18
console.log(bubbleSort(numbers));

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!