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

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

代码实现:

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个位置上的数字做对比,然后两两交换位置,插入排序是前面位置上的数字和当前位置上的数字做对比。

相关推荐
CHANG_THE_WORLD1 分钟前
深入理解递归:从函数调用到调用栈的完整执行过程
java·开发语言·算法
geovindu2 小时前
go:Backtracking Algorithm
开发语言·后端·算法·golang·回溯算法
微露清风2 小时前
模拟算法学习记录
学习·算法
KaMeidebaby2 小时前
卡梅德生物技术快报 | abcore 纳米抗体文库:从PNAS论文看纳米抗体理性设计:构象熵作为亲和力预测新指标的技术实现
java·开发语言·人工智能·算法·机器学习
肖志-AI全栈2 小时前
JavaScript 快速排序:从 pivot、双指针到分治思想
开发语言·javascript·排序算法
问商十三载3 小时前
2026法律行业AI引擎生成式优化怎么优化?三层专业加固提排名,零成本提33%引用率附适配表
java·前端·人工智能·算法
zander2583 小时前
138. 随机链表的复制
数据结构·算法·链表
过期动态3 小时前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
来一碗刘肉面3 小时前
栈在递归中的应用
数据结构·算法