直接插入排序——排序算法(python)
1.直接插入算法直接插入排序是把新的数据插入已经排序好的数列中,排序的基本方法是:每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的适当位置上去,直到元素全部插入为止。直接插入算法不能任意使用,它比较适合待排序记录数目较少且基本有序的情形,如果数目过大,直接插入排序算法会大大降低性能。这是一种比较稳定的排序算法,时间复杂度为O(n²)。2.实现代码def InsertSo
·
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]

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