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

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

代码实现:

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

相关推荐
倒头就睡的小比特2 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼2 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
旖旎夜光2 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark2 天前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her12 天前
并查集-听课笔记
笔记·算法·并查集
码流子2 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven2 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark2 天前
从算法设计模式看编程思维的抽象能力4
算法
2601_962218612 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法