排序算法(二):插入排序

插入排序是一个对少量元素进行排序的有效算法。插入排序和很多人打牌时,整理手中的牌时的做法差不多。在开始摸牌时,我们的左手是空的,接着,一次从桌上摸起一张牌,为了找到这张牌的正确位置,我们需要把这张牌和已有的牌一一做对比。

代码实现:

python 复制代码
def insert_sort(data):
    i = 1
    total = len(data)
    while i < total:
        current = data[i]

        if current > data[i-1]:
            i = i + 1
            continue
        else:
            j = i - 1

            while j >= 0:
                if data[j] < current:
                    break

                if data[j] > current:
                    data[j+1] = data[j]

                j -= 1

            data[j+1] = current

            i += 1

    return data

插入排序的核心思路是:

前一个位置的数字和当前位置上的数字做对比,如果当前位置大于前一个位置,那就不动,如果比前一个位置上的数字小,那就把前一个位置上的数字后移,继续做比较,直到找到当前位置上的数字的正确位置,然后赋值。

插入排序和冒泡排序的区别是,冒泡排序是相邻2个位置上的数字做对比,然后两两交换位置,插入排序是前面位置上的数字和当前位置上的数字做对比。

相关推荐
shehuiyuelaiyuehao4 小时前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
203号居民6 小时前
LeetCode hot 100 — 141. 环形链表2
算法·leetcode·链表
玖玥拾6 小时前
LeetCode 202 快乐数
算法·leetcode
LuminousCPP7 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
ZhouDevin8 小时前
算法论文/数据集3——CLD(TMLR2025)压缩训练集,仅保留对验证集有益的样本
人工智能·深度学习·算法·计算机视觉
Tim_108 小时前
【LeetCode】29、两数相除
算法·leetcode·职场和发展
船厂电气自动化ai大模型9 小时前
AI大模型与数学/第63课:矩阵定义、矩阵加法、标量乘法(逐级精讲)
数据结构·人工智能·深度学习·线性代数·算法
余额瞒着我当琳9 小时前
算法修炼 chapter 2 双指针进阶、盛最多水的容器、有效三角形的个数、两数之和、三数之和、四数之和
算法
你压到我腿毛了6669 小时前
C语言冒泡算法(Bubble sort)
c语言·数据结构·算法
靠沿10 小时前
贪心算法专题(三)
算法·贪心算法