一、基本思想
- 屬於內部排序法,是對於欲排序的元素以插入- 的方式找尋該元素的適當位置,以達到排序的目的。
- 整個排序過程爲n-1趟插入,即先將序列中第1個記錄看成是一個有序子序列,然後從第2個記錄開始,逐個進行插入,直至整個序列有序
二、示例
三、實現代碼
public class Demo134{
public static void main(String []args){
int arr[]={23,15,-13,62,5,-23,0,17};
for(int i=1;i<arr.length;i++){
int insertVal=arr[i];
//insertVal準備和前一個數比較
int index=i-1;
while(index>=0&&insertVal<arr[index]){
//將把arr[index]向後移動一位
arr[index+1]=arr[index];
//讓index向前移動一位
index--;
}
//將insertVal插入到適當位置
arr[index+1]=insertVal;
}
//輸出最後結果
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}
四、時間複雜度T(n)=O(n²)
- 若待排序記錄按關鍵字從小到大排列(正序)
- 關鍵字比較次數:
- 記錄移動次數:
- 若待排序記錄按關鍵字從大到小排列(逆序)
- 關鍵字比較次數:
- 記錄移動次數:
- 若待排序記錄是隨機的,取平均值
- 關鍵字比較次數:
- 記錄移動次數: