前言
這兩天一直研究排序算法,今天看了計數排序,想想自己真是個蠢蛋,怎麼就是搞不懂如何實現的呢,雖然自己在學習過程中記錄了自己對於算法邏輯的理解以及思路,但是自己重新去整理思路的時候想不通一個地方到底是如何實現的,鬱悶了一下午。
雖然有個地方沒有搞懂,但是還是要把自己以前記錄的再重新過一遍,指不定能得到一個更新的認識呢。今天就以插入排序。
好了,言歸正傳,上代碼!
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&¤t<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));
}
}
以上就是自己對於插入排序的認識以及理解