插入排序算法 - LeetCode (147) 对链表进行插入排序

执行结果:通过
执行用时 :392 ms, 在所有 Python3 提交中击败了64.92%的用户
内存消耗 :15.7 MB, 在所有 Python3 提交中击败了7.38%的用户

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def insertionSortList(self, head: ListNode) -> ListNode:
        if head==None or head.next==None:
            return head
        
        p=head
        
        while p.next!=None:
            if p.val<=p.next.val:    #如果已满足顺序,则跳到下一个节点
                p=p.next
                continue
                
            tmp=p.next               #将需要排序的的节点取出,并断开原有连接
            p.next=p.next.next
            tmp.next=None
            
            if head.val>=tmp.val:   #处理头节点的特殊情况
                tmp.next=head
                head=tmp
                continue
                
            t=head
            
            while t != p:
                if t.next.val<tmp.val:
                   t=t.next
                else:
                   tmp.next=t.next
                   t.next=tmp
                   break

        return head

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值