Wiki : http://en.wikipedia.org/wiki/Insertion_sort
看看下面的动态图片, 就明白插入排序是怎么回事了:
WiKi上给出的伪代码:
Pseudocode of the complete algorithm follows, where the arrays arezero-based:
// The values in A[i] are checked in-order, starting at the second one
for i ← 1 to i ← length(A)-1
{
// at the start of the iteration, A[0..i-1] are in sorted order
// this iteration will insert A[i] into that sorted order
// save A[i], the value that will be inserted into the array on this iteration
valueToInsert ← A[i]
// now mark position i as the hole; A[i]=A[holePos] is now empty
holePos ← i
// keep moving the hole down until the valueToInsert is larger than
// what's just below the hole or the hole has reached the beginning of the array
while holePos > 0 and valueToInsert < A[holePos - 1]
{ //value to insert doesn't belong where the hole currently is, so shift
A[holePos] ← A[holePos - 1] //shift the larger value up
holePos ← holePos - 1 //move the hole position down
}
// hole is in the right position, so put valueToInsert into the hole
A[holePos] ← valueToInsert
// A[0..i] are now in sorted order
}