经典排序算法(三)冒泡排序

167 阅读1分钟

原理:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

图解:

bubbleSort.png

代码实现:

// 冒泡排序
const bubbleSort = function (arr) {
	// 遍历数组 至倒数第二个, 倒数第二个会和最后一个元素(相邻)相比较
	//	共需要 arr.length - 1 次的沉底操作
	for (let count = 0 ; count < arr.length - 1 ; count++) {
		for(let i = 0 ; i < arr.length - 1; i++) { // 该循环完成一次沉底
			let currentNumber = arr[i] // 当前数据
			let nextNumber = arr[i + 1] // 相邻数据
			if (currentNumber > nextNumber) {
				// 向右沉 (交换两个位置)
				let temp = arr[i]
				arr[i] = arr[i + 1]
				arr[i + 1] = temp
			}
		}
	}
	return arr
}

const s = [22, 8 ,16 ,5 , 47, 1, 10, 3 , 15]
console.log(bubbleSort(s))

结果: [1, 3, 5, 8, 10, 15, 16, 22, 47]