一,冒泡排序

冒泡排序即把最小的元素经过交换位置慢慢浮到前端。

思路1,从左到右依次比较相邻元素的大小,把较大的元素放到右边。 2,从第一组即索引为0,1的元素开始比较,大的放右边。再比较索引为1,2的元素。经过一轮,数组的最右边是该数组的最大值。 3,重复上一步的步骤,前一轮得到的最大值不参与比较。 4,按照上述规则,每一轮会减少一个元素,直至排列完成。

演示

代码实现

思路

  • 1,在未排序序列中找到一个最小值放到排序序列的起始位置。
  • 2,在剩余未排序序列中继续寻找最小值放到已排序列的末尾端。
  • 3,重复n次。

演示

代码实现

思路

  • 1,将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
  • 2,从头到尾依次扫描未排序序列,将扫描到的每个元素与有序序列的每个元素进行比较,小于哪个有序序列的元素就进行交换,相当于插入到该元素索引位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

演示

代码实现

let arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];
function insertionSort(arr) {
  for (let i = 0; i  0) {
      arr[j] = arr[j - 1];
      j--;
    }
    arr[j] = num;
  }
  return arr;
}
console.log(insertionSort(arr));