插入排序

插入排序

插入排序 

 

import java.util.concurrent.TransferQueue;

public class InsertSort {

    public static void main(String[] args) {
        int a[] = {3,1,5,7,2,4,9,6,7};
        insertSort(a);
        for(int b : a){
            System.out.println(b);
        }
    }

    public static void insertSort(int a[]){
        int i,j;
        /**
         * 先将数组分开两个集合
         * {3} {1,5,7,2,4,9,6}
         * 然后取第二个集合中的第一个元素和第一个集合中的最后一个元素,倒数第二个元素 以此类推
         * 进行比较 插入到合适的位置
         */
        //这里遍历的是第二个集合 所以i=1 意思是从a[1]开始作为target进行与第一个集合中的元素以逆序的形式依次对比
        for(i=1;i<a.length;i++){
            int temp = a[i];
            //对第一个集合中的元素 进行逆序遍历
            for(j=i;j>0 && temp < a[j-1];j--){
                //如果第二个集合中的第一个元素 < 第一个集合中的某个位置的元素 元素后移,为插入target做准备
                a[j] = a[j-1];
            }
            //将第二个集合中的第一个元素 插入到第一个集合中合适的位置
            a[j] = temp;
        }
    }
}

打印结果:

插入排序