首页 > 编程语言 > 详细

147. 对链表进行插入排序

时间:2019-03-17 21:50:17      阅读:201      评论:0      收藏:0      [点我收藏+]

147. 对链表进行插入排序

题意

对链表进行插入排序

解题思路

利用插入排序的思想,当前节点和下一个节点进行比较,找到当前值大于下一个值的节点A,接着将该节点A的方向指向节点的下下个位置C,找到最后一个个比当前节点的下一个节点B的值还有小的节点E,将节点B的方向指向节点E的下一个节点Q,再将节点E的方向指向节点B,完成整个两两交换的过程;

举例来讲如下:

技术分享图片

实现

class Solution(object):
   def insertionSortList(self, head):
       """
      :type head: ListNode
      :rtype: ListNode
      """
       if not head or not head.next:
           return head
       cur = head
       # 新建一个无用的节点
       dummy = ListNode(0)
       dummy.next = head
       while cur.next:
           if cur.val <= cur.next.val:
               cur = cur.next
           else:
               next_node = cur.next
               cur.next = next_node.next
               prev_node = dummy
               # 找到最后一个比下一个节点的值还要小的节点
               while prev_node.next.val <= next_node.val:
                   prev_node = prev_node.next
               next_node.next = prev_node.next
               prev_node.next = next_node
       return dummy.next

147. 对链表进行插入排序

原文:https://www.cnblogs.com/George1994/p/10549088.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!