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

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

代码实现:

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

相关推荐
可触的未来,发芽的智生11 分钟前
新奇特:神经网络的集团作战思维,权重共享层的智慧
人工智能·python·神经网络·算法·架构
_屈臣_11 分钟前
卡特兰数【模板】(四个公式模板)
c++·算法
坚持编程的菜鸟1 小时前
LeetCode每日一题——交替合并字符串
c语言·算法·leetcode
悦悦子a啊1 小时前
[Java]PTA: jmu-Java-02基本语法-08-ArrayList入门
java·开发语言·算法
xlq223222 小时前
12.排序(上)
数据结构·算法·排序算法
努力学习的小廉2 小时前
我爱学算法之—— 分治-快排
c++·算法
未知陨落2 小时前
LeetCode:77.买卖股票的最佳时机
算法·leetcode
DeeGLMath3 小时前
排序算法的并行加速实现
算法·排序算法·joblib·sortingx
机器学习之心3 小时前
量子遗传算法是一种将量子计算原理与遗传算法相结合的智能优化算法,代表了进化计算的一个有趣分支
算法·量子计算
Miraitowa_cheems4 小时前
LeetCode算法日记 - Day 59: 字母大小写全排列、优美的排列
java·数据结构·算法·leetcode·决策树·职场和发展·深度优先