voidinsertion_sort(int arr[], int len){ int i, j; int temp; for (i = 1; i < len; i++) { temp = arr[i]; //與已排序的數逐一比較,大於temp時,該數向後移 j = i - 1; // 如果将赋值放到下一行的for循环内, 会导致在第10行出现j未声明的错误 for (; j >= 0 && arr[j] > temp; j--) { //j循环到-1时,由于[[短路求值]](http://zh.wikipedia.org/wiki/短路求值),不会运算array[-1] arr[j + 1] = arr[j]; } arr[j + 1] = temp; //被排序数放到正确的位置 } }
Python
definsert_sort(lst): n=len(lst) if n == 1: return lst for i in range(1, n): for j in range(i, 0, -1): if lst[j] < lst[j-1] : lst[j], lst[j-1] = lst[j-1], lst[j] return lst
Python的另一个版本
definsertion_sort(lst): if len(lst) == 1: return lst
for i in range(1, len(lst)): temp = lst[i] j = i - 1 while j >= 0and temp < lst[j]: lst[j + 1] = lst[j] j -= 1 lst[j + 1] = temp return lst