一)定义
直接插入排序( straight insertion sort )是一种最简单的排序方法。它的基本操作是将一个记录插入到一个长度为 m (假设)的有序表中,使之仍保持有序,从而得到一个新的长度为 m + 1 的有序表。
例如:

二)插入排序实现(java)
// 升序
public static void sort(int[] a) {
for (int i = 1; i < a.length; i++) {
int j = i;
int temp = a[j];
while (j > 0 && temp < a[j - 1]) {
a[j] = a[j - 1];
j--;
}
a[j] = temp;
}
}
public static void main(String[] f) {
int[] a = new int[25];
Random random = new Random();
for (int i = 0; i < a.length; i++) {
a[i] = random.nextInt(1000);
}
InsertSort.sort(a);
for (int a_ : a)
System.out.println(a_);
}
此算法外循环 n-1 次,在一般情况下内循环平均比较次数的数量级为O(n) ,所以算法总时间复杂度为O(n2) 。
插入排序的过程中比较的过程就是一个查找的过程,为了更加快速的找到“合适的位置”,可以使用高效些的查找算法,例如和折半查找结合,就形成了折半插入排序。