public class InsertSort {
public static void main(String[] args) {
int[] arr = {49, 38, 65, 97, 76, 13, 27, 49};
int[] sortedArr = insertSortAsc(arr);
System.out.println(Arrays.toString(sortedArr));
}
/**
* 这里可以返回void,也可以再把排好序的数组再返回一次
* @param arr
* @return
* 最好情况,即之前已全部排好序:时间复杂度o(n)
* 最坏情况,即之前全部逆序:时间复杂度o(n^2)
* 平均时间复杂度:o(n^2)
* 总体来说此算法效率不高,但在之前已基本排好序的情况下,表现还可以
*/
public static int[] insertSortAsc(int[] arr){
// 先把第一个元素看做只有一个元素的数组,显然它是排好序的
// 所以正经排序从i=1开始
for (int i = 1; i < arr.length; i++) {
int tmp = arr[i];
int j;
for (j = i-1; j>=0 && arr[j] > tmp; j--) {
arr[j+1] = arr[j];
}
arr[j+1] = tmp;
}
return arr;
}
}
复习插入排序
于 2024-07-20 20:46:41 首次发布