直接插入排序的基本操作是讲一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。
下面演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。
想象一下打牌的时候按顺序整理手牌,同花顺啥的。
【找到一个合适的位置】
public class StraightInsertionSort {
public int[] insertSort(int A[]) {
if (A.length < 2)
return A;
for (int i = 1; i < A.length; i++) {
int currentNum = A[i];//当前位置
int position = i;
for (int j = i - 1; j >= 0; j--) {
if (A[j] > currentNum) {
A[j + 1] = A[j];
position -= 1;
}
}
A[position] = currentNum;
}
return A;
}
public static void main(String args[]) {
int A[] = { 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 };
int n = A.length;
SelectionSort selectionSort = new SelectionSort();
double start = System.currentTimeMillis();
int B[] = selectionSort.selectSort(A, n);
for (int i = 0; i < n; i++)
System.out.print(B[i] + ",");
double end = System.currentTimeMillis();
System.out.println("\n程序运行时间:" + (end - start) + "毫秒");
}
}
输出:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,
程序运行时间:1.0毫秒