冒泡排序一般排在第一位,說明它是排序算法的入門算法,是最簡單的一個排序算法,並且必須掌握和理解。算法
先來看看代碼吧:數組
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; }