《排序算法》系列 -淺顯易懂的認識---插入排序

前言

這兩天一直研究排序算法,今天看了計數排序,想想自己真是個蠢蛋,怎麼就是搞不懂如何實現的呢,雖然自己在學習過程中記錄了自己對於算法邏輯的理解以及思路,但是自己重新去整理思路的時候想不通一個地方到底是如何實現的,鬱悶了一下午。

在這裏插入圖片描述
雖然有個地方沒有搞懂,但是還是要把自己以前記錄的再重新過一遍,指不定能得到一個更新的認識呢。今天就以插入排序。

好了,言歸正傳,上代碼!

import java.util.Arrays;

/**
 * @author Administrator
 *
 * 插入排序中,將分成已排序和未排序兩個區間
 * 已排序中默認是第一個值,未排序是後續的值
 * 通過已排序中的第一個值與未排序中的值進行比較,如果未排序中的值小於已排序中的值,則將該值與已排序中前面的值繼續比較,若小於則插入到指定的元素前面
 * 依次比較,最終未排序的值都會轉移到已排序中
 */
public class insertSort {


    public static void insertSort(int[] array){
        for (int i = 1; i < array.length; i++) {
            int current = array[i];
            //設定默認下標爲0,也就是已排序數組中默認
            int preIndex = i-1;
            //找到當前數組中最小的一個值,並將該值與已排序數組中的元素進行比較,如果小則插入到前面
            //通過while循環來依次與已排序數組元素做比較,同時設定一個停止條件
            while (preIndex>=0&&current<array[preIndex]){
                array[preIndex+1] = array[preIndex];
                preIndex--;
            }
            array[preIndex+1] = current;

        }
    }


    public static void main(String[] args) {
        int[] arr = new int[5];
        arr[0]=2;
        arr[1]=5;
        arr[2]=4;
        arr[3]=3;
        arr[4]=1;
        System.out.println(Arrays.toString(arr));
        insertSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

 


以上就是自己對於插入排序的認識以及理解

對於插入排序,重要的問題在於分區間的問題,如何將分開的區間通過邏輯化,做到兩個區間之間元素的交換,這其中通過while循環來作爲一個臨界,能夠爲符合條件的元素留出一個位置進行插入到排序數組中。

這只是自己的一些理解,如果有錯誤的地方歡迎給予指正,希望能得到大佬的指點。萬分感謝

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章