算法定义
直接插入排序是插入排序的一种,是一种简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。
算法原理
直接插入排序算法流程如下:
1、将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
2、从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。
代码实现
按照上面的思路,可以通过交换法实现。
从第2个数开始,确定要操作的数,对要操作的数找到要插入的位置。
然后一路往前对比,若当前数字比前一个数字小,那么交换两个数字,通过不断的交换找到这个数合适的位置插入。
交换法的代码如下:
public class Main {
// 直接插入排序(插入排序),交换法,平均时间复杂度O(n^2),最好时间复杂度O(n),最坏时间复杂度O(n^2),空间复杂度O(1)
public static void directlyInsertSort(int[] arr) {
// 从第2个数开始,确定要操作的数,对要操作的数找到要插入的位置
for (int i = 1; i < arr.length; ++i) {
// 获取当前数字的下标
int j &#