冒泡排序
- 冒泡排序的思想:
- 从头开始,比较相邻的两个元素,若第一个比第二个大,则交换他们
- 一轮比较结束了之后
- 重新从头开始再次循环一遍
冒泡排序的实现
function bubbleSort(nums) {// 临时变量用来临时保存两个值交换过程中的一个值let temp;// 外层比较次数为元素个数for (let i = 0; i < nums.length; i++) {// 比较的次数为元素数量 - 1for (let j = 0; j < nums.length - 1; j++) {if (nums[j] > nums[j + 1]) {temp = nums[j + 1];nums[j + 1] = nums[j];nums[j] = temp;}}}return nums;}// let arr = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];// console.log(bubbleSort(arr));function createArr(n) {let arr = [];for (let i = n; i > 0; i--) {arr.push(i);}return arr;}let arr = createArr(10000);console.log(bubbleSort(arr));
冒泡算法的改进
如上图所示:虽然经过第一轮比较之后,5已经是数组中最大的元素且位置已经在最后面,但是之后的每一轮比较还是把5给加上了
- 改进策略:每一轮都相较上一轮减少一次无用的比较

function bubbleSort(nums) {let temp;for (let i = 0; i < nums.length; i++) {// 减少每次重复比较的次数for (let j = 0; j < nums.length - i - 1; j++) {if (nums[j] > nums[j + 1]) {temp = nums[j + 1];nums[j + 1] = nums[j];nums[j] = temp;}}}return nums;}


