插入排序法(思路及代码实现)
生活随笔
收集整理的這篇文章主要介紹了
插入排序法(思路及代码实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
插入排序法思想:
插入排序的基本思想是:把n個待排序的元素看成一個有序表和一個無序表,開始時有序表只包含一個元素,無序表中包含有n-1個元素,排序過程中每次從無序表中取出第一個元素,把它的排序碼依次與有序表元素的排序碼進行比較,將它插入到有序表中的適當位置,使之成為新的有序表。
下圖中的初始狀態時,17就為有序表中的一個元素,剩下的元素都包含在無序表中,然后取數據3與17進行比較,然后插入到合適的位置,依次循環。插入排序的插入次數是n-1次,也就是數組長度-1次。
代碼實現:
//插入排序法 public class InsertSort {public static void main(String[] args) {// TODO Auto-generated method stubint[] arr = {100,20,40,1};insertSort(arr);}public static void insertSort(int[] arr) {for(int i = 1 ; i< arr.length;i++) {int insertVal = arr[i]; //定義待插入的數據int insertIndex = i-1; //定義待插入數據的前一個數據的下標//insertIndex >= 0 判斷待插入數的前一個數下標 是不是大于等于0 如果不是的話 寄說明下標越界了 即保證數組不越界//insertVal < arr[insertIndex] 判斷待插入數是否小于前一位數據 如果小的話再去更換位置 while(insertIndex >= 0 && insertVal < arr[insertIndex]) { //這一步就是在待插入數小于前一位數的情況下 將前一位數后移 //注意:以上數組為例,移動后的數組為{100,100,40,1} 并不是{20,100,40,1}//在一開始 我們就將待插入數取了出來 定義到了insertVal中 arr[insertIndex+1] = arr[insertIndex]; insertIndex--; }//當跳出while循環 說明插入的位置已經找到了 位置下標為 inserIndex+1 //說明下位置下標為什么是inserIndex+1 比如數組為{20,30,40}//當30和20比較的時候 30比20大 就不需要移動位置了 這是30應該所處的位置下標就是1//而insertIndex是0 所以 待插入數的位置下標應該是insertIndex + 1;arr[insertIndex + 1] = insertVal;System.out.println("第"+i+"次排序");System.out.println(Arrays.toString(arr));}}}冒泡排序
選擇排序
總結
以上是生活随笔為你收集整理的插入排序法(思路及代码实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql 和oracle的区别
- 下一篇: 快速排序法(思想及代码实现)