冒泡排序

冒泡排序是最简单的一种排序方法,正因为它很简单,所以受到了面试官的青睐,成了程序员必会的内容。

它的思想是通过两次循环,如果前一个比后一个小的时候那么两者互换位置(假设是从小到大排序)。就这样大的数就会像水中的气泡一样从前面逐渐走到后面,这也正式名字的由来。

这里给出冒泡排序的实现,里面使用了flag进行标记,如果已经排好序的数组那么就不需要多次遍历了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function bubbleSort(arr){
var flag = true; // 标记某次循环是否执行完毕
for(var i = 0; i < arr.length - 1 && flag; i++){
flag = false; // 如果本次循环没有交换 说明已经已经是排好序的 不需要再遍历了
for(var j = 0; j < arr.length - 1 - i; j++){
// 如果前面的比后面的大 那么交换元素
if(arr[j] > arr[j + 1]){
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;// 有交换的时候 说明很可能还没有排好序
}
}
}
return arr;
}

var arr = [8,3,10,7,5,6,4,2,1,9];
bubbleSort(arr);
console.log(arr);// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
-------------本文结束 感谢您的阅读-------------
0%