算法学习笔记-冒泡排序

排序算法(一): 冒泡排序

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

算法步骤
  1. 比较相邻的元素。如果第一个比第二个大,就交换它们两个;

  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;

  3. 针对所有的元素重复以上的步骤,除了最后一个;
    重复步骤1~3,直到排序完成

动图演示

算法学习笔记-冒泡排序

代码实现
function bubbleSort(arr) {
		if (!Array.isArray(arr)) { throw new Error('bubbleSort params type Error!!! Only Array is accecpt') };
		const LEN = arr.length;
		// 每个成员都要比较一次
		for(let i = 0; i < LEN; i++) {
			// 拿第一个成员与后面的成员比较(LEN - i - 1 因为每次排序后,后面的数已经和前面的对比过, 无需再对比)
			for(let j = 0; j < LEN - i - 1; j++) {
				// 如果后一个比前一个小, 则互换位置
				if(arr[j + 1] < arr[j]) {
					let temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
		return arr;
	}
	console.log('this is bubbleSort:', bubbleSort([3,4,5,1,5,22,3,55,9]))
	console.log('this is bubbleSort:', bubbleSort('1254658'))

PS: 可以借鉴sort的实现方式,控制升序或降序