算法总结-直接插入排序

本文详细介绍了直接插入排序的算法定义、原理、代码实现(交换法与移动法)以及算法效率分析。直接插入排序是稳定的排序算法,具有O(n)到O(n^2)的时间复杂度,而空间复杂度为O(1)。文章还提供了算法动图和原文链接供读者深入理解。
摘要由CSDN通过智能技术生成

算法定义

直接插入排序是插入排序的一种,是一种简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增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 &#
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值