被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条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料