前言
插入排序也是比較常用的
原理
對於給定的一個數組,初始時,假設第一個元素自成一個有序序列,其餘元素爲無序序列,接着從第二個元素開始,按照元素的大小,依次將當前處理的元素插入到之前的有序序列中,直到最後一個元素插入到有序序列中爲止。
時間複雜度
平均情況:n*n
最壞情況:n*n
最好情況:n
代碼
public class InsertSort {
//插入排序
//對於給定的一個數組,初始時假設第一個記錄自成一個有序序列,其餘記錄爲無序序列。接着從第二個記錄開始,
//按照記錄的大小依次將當前處理的記錄插入到其之前的有序序列中,直至最後一個記錄插入到有序序列中爲止。
//時間複雜度 n*n 最好情況 n 平均情況n*n
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr={6,3,8,2,9,1};
System.out.println("排序前數組爲:");
for(int num:arr){
System.out.print(num+" ");
}
System.out.println();
int tmp;
for (int i = 1; i < arr.length; i++) {
// 待插入數據
tmp = arr[i];
int j;
for (j = i - 1; j >= 0; j--) {
// 判斷是否大於tmp,大於則後移一位
if (arr[j] > tmp) {
arr[j + 1] = arr[j];
} else {
break;
}
}
arr[j + 1] = tmp;
//System.out.println(i + ":" + Arrays.toString(arr));
System.out.println("第"+i+"趟排序後");
for(int num:arr){
System.out.print(num+" ");
}
System.out.println();
}
System.out.println();
System.out.println("排序後的數組爲:");
for(int num:arr){
System.out.print(num+" ");
}
}
}
下一篇:快速排序
入口在此:點我學習快速排序