文章目录
  1. 1. 冒泡排序
    1. 1.1. 排序问题
    2. 1.2. 思路
    3. 1.3. js实现
    4. 1.4. 验证

冒泡排序的javascript实现。

冒泡排序


排序问题

  • 输入:n个数的一个序列<a1, a2, ..., an>
  • 输出:输入序列的一个排列<a1', a2', ..., an'>,满足a1' <= a2' <= ... <= an'

思路

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

js实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function bubbleSort(iArr) {
// 交换函数
function swap(arr, i, j) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
var n = iArr.length;
// 从左边开始
for (var i = 0; i < n; i++) {
// 每次冒泡完毕,右侧新固定一个较大值
for (var j = 1; j < n - i ; j++) {
// 比较,交换大的于右侧
if (iArr[j - 1] > iArr[j]) {
swap(iArr, j - 1, j);
} else {
continue;
}
}
}
return iArr;
}

验证

1
2
3
4
5
6
7
8
insertionSort([5, 2, 4, 6, 1, 3]);
// 输出[1, 2, 3, 4, 5, 6]
insertionSort([2, 1, 3, 1, 5]);
// 输出[1, 1, 2, 3, 5]
insertionSort([5, 2, 12, 2, 134, 1, 3, 34, 4, 6, 1, 3, 4]);
// 输出[1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 12, 34, 134]

查看Github有更多内容噢:https://github.com/godbasin
更欢迎来被删的前端游乐场边撸猫边学前端噢

码生艰难,写文不易,给我家猪囤点猫粮了喵~

作者:被删

出处:https://godbasin.github.io

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

文章目录
  1. 1. 冒泡排序
    1. 1.1. 排序问题
    2. 1.2. 思路
    3. 1.3. js实现
    4. 1.4. 验证