插入排序
动图演示
看下面
动图演示,就能很容易理解上面所述内容。
java
/**
* @ClassName: InterpositionSort
* @author: qushihao_java@aliyun.com
* @create: 2020-10-21 19:53
* @Version: 1.0
*/
import java.util.Arrays;
/**
*@Description: 插入排序实现
*/
public class InterpositionSort {
public static void main(String[] args) {
//
int arr[]= new int[]{1,9,8,6,7,5,2,10};
// SortInterposition(arr);
System.out.println(Arrays.toString(SortInterposition(arr)));
}
public static int[] SortInterposition(int array[]){
int len;
// 基本情况下的数组可以直接返回
if(array == null || (len = array.length) == 0 || len == 1) {
return array;
}
int current;
for (int i = 0; i < len - 1; i++) {
// 第一个数默认已排序,从第二个数开始
current = array[i + 1];
// 前一个数的下标
int preIdx = i;
// 拿当前的数与之前已排序序列逐一往前比较,
// 如果比较的数据比当前的大,就把该数往后挪一步
while (preIdx >= 0 && current < array[preIdx]) {
array[preIdx + 1] = array[preIdx];
preIdx--;
}
// while循环跳出说明找到了位置
array[preIdx + 1] = current;
}
return array;
}
}
算法分析
最佳情况:T(n) = O(n) 最坏情况:T(n) = O(n2) 平均情况:T(n) = O(n2)