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 }