直接插入排序是插入排序中最简单的排序方法,类似于玩纸牌时整理手中纸牌的过程,其基本思想是:依次将待排序序列中的每一个记录插入到一个已经排好序的序列中,直到全部记录都排好序。具体做法如下:
设有序列12,15,9,20,6,31,24。([ ]中为有序区,[ ]外为无序区)
(1)将无序序列中第一个数12放入有序区,形成新序列[12] 15,9,20,6,31,24。
(2)将无序区中第一个数插入到有序区中适当的位置,即15插入到12之后形成新序列[12,15] 9,20,6,31,24。
(3)重复执行(2)直至整个序列有序。
java代码如下:
package sort1;
public class InsertSort {
public static void insertSort(int a[]){
int n=a.length;
int temp;
for(int i=0;i<n-1;i++){
for(int j=i+1;j>0;j--){
if(a[j]<a[j-1]){
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
//[]中为有序区,[]外为无序区
System.out.print("第"+(i+1)+"次的排序结果为:[");
for(int k=0;k<i+1;k++){
System.out.print(a[k]+" ");
}
System.out.print("]"+" ");
for(int m=i+1;m<n;m++){
System.out.print(a[m]+" ");
}
System.out.println("");
}
}
public static void main(String args[]){
int b[]={12,15,9,20,6,31,24};
insertSort(b);
System.out.print("最终的排序结果为:[");
for(int i=0;i<b.length;i++)
System.out.print(b[i]+" ");
System.out.println("]");
}
}
运行结果如图: