冒泡排序一般排在第一位,说明它是排序算法的入门算法,是最简单的一个排序算法,并且必须掌握和理解。算法
先来看看代码吧:数组
function bubbleSort(arr) { let temp; for (let i = 0, len = arr.length; i < len; i++) { for (let j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; }
以上作了两层循环,第二层循环是第一个项和第二个项对比,若是第二个大于第一个,就交换他们的位置,那么大的数就在右边。进入下一次循环,第二个和第三个对比,大的移动到右边,以此类推,最大的数会交换到最右边。也就是说第二层循环的目的是找出最大值,冒泡到最右边。spa
第一层循环目的是要循环arr.length遍,第一遍是找出数组第一大的数,排到最右边,第二遍是找出第二大的(由于已经找出第一大的,因此是j < len - 1 -i), 继续循环找到次大的书,循环arr.length编,就从右向左依次递减,排序完成。code
若是是倒序排列,第二层循环方向,每次找出最小值,冒泡到左边。blog
function selectionSort(arr) { let temp; let minIndex; for (let i = 0, len = arr.length; i < len - 1; i++) { minIndex = i; for (let j = i; j < len; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } return arr; }