演算法步驟
- 將待排序序列第一個元素看做一個有序序列,把第二個元素到最后一個元素當成是未排序序列,
- 從頭到尾依次掃描未排序序列,將掃描到的每個元素插入有序序列的適當位置,(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的后面,

代碼
import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
int[] arr = {5,3,6,9,4,2,7};
insertSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void insertSort(int[] arr){
for (int i = 1; i < arr.length; i++){
int insertVal = arr[i];//定義待插入的數
int insertIndex = i - 1;//待插入數的前一個數的下標
while (insertIndex >= 0 && insertVal < arr[insertIndex]){//如果待插入的數比前面的數小就做一個依次覆寫操作
arr[insertIndex + 1] = arr[insertIndex];
insertIndex--;
}
//當退出while回圈就說明插入位置已找到,insertIndex + 1
arr[insertIndex + 1] = insertVal;
}
}
}
本文來自博客園,作者:腹白,轉載請注明原文鏈接:https://www.cnblogs.com/wyh518/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/514056.html
標籤:Java
上一篇:protobuf怎么處理java中的Object和Object[],protobuf的bytestring和object[]
