题目:
对链表进行插入排序:插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。
思路:
使用数组,也属于懒人做法,最后使用尾插法来插入节点。
程序:
# 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