Skip to content

Files

Latest commit

3f7fd2f · Aug 31, 2021

History

History
42 lines (26 loc) · 1.5 KB

3.InsertSort.md

File metadata and controls

42 lines (26 loc) · 1.5 KB

插入排序

插入排序是一种比较直观的排序方式。插入排序:把未排序的数组中第一个元素当作一个有序的数组,取剩余未排序的第一个元素,和有序数组的最后一个元素比较,如果小于最后一个元素,最后一个元素后移一位,直到找到合适的位置插入。循环执行上述操作,直达未排序的元素执行完。(这个类似于打牌,洗牌)

插入排序还可以进行一些优化(插入操作过程中,进行二分查找对比,进行插入操作)

1.算法步骤

  1. 数组的第一个元素当作一个有序的数组,把第二个元素到最后一个元素当作未排序的数组。
  2. 从未排序数组中取出首个元素A(剩余元素成为新的未排序数组),逆向循环(从尾部到首部)从有序数组取出元素B进行对比,如果A小于元素B,元素B向后移一位。(如果小于B,则把元素A插入到B元素后的位置)。
  3. 循环执行步骤2,执行完未排序数组。

2.算法演示流程

Chooce Sort

3.算法代码

	function insertSort(arr){
		var len = arr.length;
		var preIndex, current;
		for(var i = 1, i < len - 1; i++){
			preIndex = i - 1;
			current = arr[i];

			while(preIndex >= 0 && arr[preIndex] > current){
				arr[preIndex + 1] = arr[preIndex];
				preIndex--;
			}
			arr[preIndex + 1] = current;
		}

		return arr;
	}

```