目录
算法思想:直接将待插入的元素插入到有序数组中
- 通常我们都以首元素为第一个有序数组,将第二个元素插入到这个有序数组中。
- 以数组前两个元素构成第二个有序数组,将第三个元素插入到这个有序数组中。
- 以数组前三个元素构成第三个有序数组,将第四个元素插入到这个有序数组中。
- 一直到以数组前(n-1)个元素构成第(n-1)个有序数组,将最后一个元素插入到这个有序数组中。
代码实现:(Java)
public void DirectInsertionSort(int arr[]) {
for(int i=1; i<arr.length; i++) {
int num = arr[i];
int j=0;
for(j = i-1; j>=0; j--) {
if(arr[j]>num) {
arr[j+1] = arr[j];
}
else
break;
}
arr[++j] = num;
}
}
时间复杂度:
外层for循环执行次数为(n-1)次,最坏的情况:内层for循环执行次数为1次到(n-1)次。循环执行总次数为,时间复杂度为O(n^2)。