1.直接插入算法

        直接插入排序是把新的数据插入已经排序好的数列中,排序的基本方法是:每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的适当位置上去,直到元素全部插入为止。

        直接插入算法不能任意使用,它比较适合待排序记录数目较少且基本有序的情形,如果数目过大,直接插入排序算法会大大降低性能。

        这是一种比较稳定的排序算法,时间复杂度为O(n²)。

2.实现代码

def InsertSort(mylist):
    length = len(mylist)
    for i in range(1, length):
        """探路的哨兵 -> j"""
        j = i - 1
        """
        如果哨兵指向的元素比当前元素大,将当前元素暂存起来,
        让哨兵指向的元素往后挪一位,哨兵继续往前探路
        """
        if mylist[i] < mylist[j]:
            tmp = mylist[i]
            mylist[i] = mylist[j]
            j -= 1
            """
            只要哨兵指向的元素比暂存的元素(tmp)大,
            哨兵就要把指向的元素往后挪一位,继续向前探路,
            直到碰到序列边界或者哨兵指向的元素小于tmp
            """
            while j >= 0 and tmp < mylist[j]:
                mylist[j + 1] = mylist[j]
                j -= 1
            """
            把tmp放在哨兵的后面
          (哨兵前面没路或者哨兵指向的元素比tmp小)
            """
            mylist[j + 1] = tmp
        
if __name__ == "__main__":
    mylist = [49, 38, 65, 87, 76, 13, 27, 49]
    InsertSort(mylist)
    print(mylist)

输出结果:

 [13, 27, 38, 49, 49, 65, 76, 87]

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐