插入排序的基本思想就是从第2个元素开始不停的与前面的已经排好序的数组进行比较,找到这个数应该插入的位置。如下图所示,其中绿色部分为已排序部分。
具体实现过程如下:
public class Test6 { public static void sort(int a[]){ int temp; for(int i=1;i<a.length;i++){ //待排序元素和有序数组的最后一个进行比较 if(a[i]<a[i-1]) { temp=a[i]; for (int j = i; j >=0; j--) { if (j>0&&temp<a[j - 1]) { a[j] = a[j - 1]; } else { a[j] = temp; break;//找到插入位置插入元素并终止内循环 } } } } } public static void printArray(int a[]){ for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } public static void main(String[] args){ int[] a={2,1,6,7,8,9,1,2,678,345,234,3452323,1,1,2,0}; sort(a); printArray(a); } }
运行结果: