Java 插入排序

     插入排序和前面兩種有點不一樣啦。插入排序有比較,移動的動做,插入排序分爲已排序部分和待插入部分,將待插入數據與有序部分比較,遍歷有序部分,找到第一個比插入數據的位置,插入數據,再移動插入位置以後的數據。數組

     比較、插入、移動數據,移動仍是有點麻煩的this

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));
    }

}

插入排序spa

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);
        }
    }

}

運行code

次數---------: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
15blog

相關文章
相關標籤/搜索