Leetcode练习(Python):链表类:第147题:对链表进行插入排序:插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。

题目:
对链表进行插入排序:插入排序算法:  插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。  
思路:
使用数组,也属于懒人做法,最后使用尾插法来插入节点。
程序:
# 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 not head:
            return None
        myNode = head
        myList = []
        while myNode:
            myList.append(myNode)
            myNode = myNode.next
        length = len(myList)
        for index1 in range(1, length):
            index2 = index1
            while index2 > 0:
                if myList[index2].val < myList[index2 - 1].val:
                    tmp = myList[index2]
                    myList[index2] = myList[index2 - 1]
                    myList[index2 - 1] = tmp
                else:
                    break
                index2 -= 1
        myNewNode = ListNode(0)
        myNewHead = myNewNode
        for index3 in myList:
            myNewHead.next = index3
            index3.next = None
            myNewHead = index3
        return myNewNode.next 
posted on 2020-05-03 16:23  桌子哥  阅读(343)  评论(0编辑  收藏  举报