1. 程式人生 > >直接插入排序實現

直接插入排序實現

public class Sort {

    public static void main(String[] args) {
        int[] arr = {1, 4, 6, 2, 3, 4};

        sort1(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i + " ");
        }
    }

    //直接插入排序
    //插入排序表面簡單,尤其是適合欺騙眼高手低的loser,它其實屬於
    //陣列操作的前移法,將遍歷時候順帶後移已近操作的數
    //其實,基於陣列無外乎前移法和重建法和分割槽法,都是經典的思想
    //具有較高的技巧性
    public static void sort1(int[] arr){
        for (int i = 1; i < arr.length; i++){
            int temp = arr[i];
            int index = 0;
            for (index = i;index > 0 && temp < arr[index-1]; index--){
                arr[index] = arr[index - 1];
            }

            arr[index] = temp;
        }
    }


}

**注意事項:**在往前找插入位置時候,需要儲存臨時變數,與這個臨時變數比較直到找到這個位置,不需要每次比較久交換,多此一舉。核心點你要知道你定義的index變數的意義,它相當於一個遊標,注意遊標勢必要越界問題。