插入排序的思路:
插入排序的思路如下,在第i次执行中,要将A[i]插入到已排序的子数组A[0…i-1]中的合适位置上,应这样进行:依次扫描序号从i-1到0的元素,每次都将A[i]和当前位置的元素比较。在扫描的每一步,元素都被移到序号更高的一个位置,这种执行比较和移位的扫描过程直到以下情况出现时为止:或者找到一个小于等于A[i]的元素,或者前面已排序数组的元素都已扫描过。在这种情况下,A[i]已被插到合适的位置,插入A[i]的过程就完成了。
插入排序的实现:
/**
* 插入排序
* Created by yuzhan on 2017/10/18.
*/
public class main {
public static void InsertSort(int[] A){
int n = A.length;
for(int i = 1;i < n;i++){
int x = A[i];
int j = i-1;
while (j >= 0 && A[j] > x){
A[j+1] = A[j];
j--;
}
A[j+1] = x;
}
}
public static void main(String[] args) {
int[] A = {123,21,33,1,14,23,65,75,134,67,2};
main.InsertSort(A);
for(int i = 0;i < A.length;i++)
System.out.print(A[i]+ " ");
}
}