首页 > 代码库 > Java 插入排序

Java 插入排序

     插入排序和前面两种有点不同啦。插入排序有比较,移动的动作,插入排序分为已排序部分和待插入部分,将待插入数据与有序部分比较,遍历有序部分,找到第一个比插入数据的位置,插入数据,再移动插入位置之后的数据。

     比较、插入、移动数据,移动还是有点麻烦的

public class InsertOne {

    /**
     * @author chengdu
     * @param args
     */
    private int[] array;
    
    public void setArray(int[] array){
        this.array = array;
    }
    public int[] getArray(){
        return array;
    }
    
    public void insertOneMove(int x, int y){  // y > x 
        if(x > array.length || y > array.length){
            System.out.println("数组越界");
        }else{
               if(array[x] > array[y]){
                    int temp = array[x];
                    array[x] = array[y];
                    for(; y > x + 1 ; y--){
                        array[y] = array[y-1];
                    }
                    array[x+1] = temp;
               }
            }
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        InsertOne insertone = new InsertOne();
        int[] testarray = {1,2,7,4,5,6,3,8};
        insertone.setArray(testarray);
        insertone.insertOneMove(2, 6);
        System.out.println(Arrays.toString(testarray));
    }

}

插入排序

public class InsertSort {

    /**
     * @author chengdu
     * @param args
     */
    private InsertOne insertone;
    
    public void setInsertone(InsertOne insertone){
        this.insertone = insertone;
    }
    public InsertOne getInsertone(){
        return insertone;
    }
    
    public void insertSortMethod(int[] array){
        int pos;
        int lenarray = array.length;
        insertone.setArray(array);
        for(pos=1; pos < lenarray; pos++){
            System.out.println("次数---------:"+pos);
            for(int i=0; i < pos; i++){
                insertone.insertOneMove(i, pos);
            }
            //输出已经排好顺序的部分
            for(int i=0; i < pos+1; i++){
                System.out.println(array[i]);
            }
        }
    }
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        InsertOne insertone = new InsertOne();
        InsertSort insertsort = new InsertSort();
        insertsort.setInsertone(insertone);
        int[] array = {9, 1, 6, 3, 4, 2, 5, 13, 15, 10};
        insertsort.insertSortMethod(array);
        System.out.println("---------顺序-----------------");
        for(Integer i : array){
            System.out.println(i);
        }
    }

}

运行

次数---------:1
1
9
次数---------:2
1
6
9
次数---------:3
1
3
6
9
次数---------:4
1
3
4
6
9
次数---------:5
1
2
3
4
6
9
次数---------:6
1
2
3
4
5
6
9
次数---------:7
1
2
3
4
5
6
9
13
次数---------:8
1
2
3
4
5
6
9
13
15
次数---------:9
1
2
3
4
5
6
9
10
13
15
---------顺序-----------------
1
2
3
4
5
6
9
10
13
15

Java 插入排序