插入排序
插入排序可以在原数组之上进行操作,不需要分配新的数组存储排序结果。基本策略是从数组中的第二个元素开始,把左边的所有元素作为已排序元素,而右边的元素是等待排序的元素。
首先指定一个等待排序的元素,然后循环左侧的每个元素,如果比当前等待排序的元素大,就把它右移一格,否则把当前待排序元素插入当前被循环元素的右边。
以下是ruby代码:
1 a = [5, 2, 4, 6, 1, 3] 2 3 j = 1 4 while j < a.length do 5 key = a[j] 6 i = j - 1 7 while i >= 0 && a[i] > key do 8 a[i + 1] = a[i] 9 i = i - 1 10 end 11 a[i + 1] = key 12 j = j + 1 13 end 14 15 puts a
理解的越多,需要记忆的就越少