被Python玩的Kenny 2019-11-27 09:47 采纳率: 100%
浏览 238
已采纳

利用for循环实现插入排序,第一个元素无法交换。

代码:

list_sort = [3, 2, 5, 8, 4, 7, 6, 9, 0, 3, 2, 5, 8, 4, 7, 6, 9, 0]
def insert_sort(list_sort):

        """Increasing insert sort"""
        length = len(list_sort)
        for i in range(1, length):
                temp = list_sort[i]
                for j in range(i-1, -1, -1):
                        if temp < list_sort[j]:
                                print(temp, 'change', list_sort[j])
                                list_sort[j+1] = list_sort[j]
                        else:
                                break
                list_sort[j+1] = temp
                print(list_sort)
        return list_sort

结果:

('insert sort: ', [3, 0, 0, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9])

截图:

图片说明

问题说明:结果输出表明第一次交换发生在第一个元素3和第二个元素2之间,但是结果并没有交换。除了这次交换,其余的交换结果表明交换逻辑没有什么问题。这是怎么回事呢?

  • 写回答

3条回答 默认 最新

  • 吃鸡王者 2019-11-27 11:03
    关注
    # coding: utf-8
    def insert_sort(list_sort):
            """Increasing insert sort"""
            length = len(list_sort)
            for i in range(1, length):
                    temp = list_sort[i]
                    for j in range(i-1, -1, -1):
                            if temp < list_sort[j]:
                                    print(temp, 'change', list_sort[j])
                                    list_sort[j+1] = list_sort[j]
                            else:
                                j=j+1
                                break
                    list_sort[j]=temp
                    print(list_sort)
            return list_sor
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题