单链表的排序(python)

思路:

链表最难受的就是不能按照下标访问,只能逐个遍历,那像排序中常规的快速排序、堆排序都不能用了,只能用依次遍历的冒泡排序、选择排序这些。但是这些O(n2)O(n^2)O(n2)复杂度的排序方法太费时间了,我们可以将其转化成数组后再排序。

具体做法:

  • step 1:遍历链表,将节点值加入数组。
  • step 2:使用内置的排序函数对数组进行排序。
  • step 3:依次遍历数组和链表,按照位置将链表中的节点值修改为排序后的数组值。
def sortInList(self , head: ListNode) -> ListNode:
        # write code here
        p = head
        nums = []
        #遍历链表,将节点值加入数组
        while p:
            nums.append(p.val)
            p = p.next
        p = head
        #对数组元素排序
        nums.sort()
        #遍历数组
        for i in range(len(nums)):
            #将数组元素依次加入链表
            p.val = nums[i]
            p = p.next
        return head
posted @   小仙女、  阅读(325)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示