147 對鍊錶進行插入排序

2022-01-23 02:59:30 字數 1001 閱讀 2284

對鍊錶進行插入排序

利用插入排序的思想,當前節點和下乙個節點進行比較,找到當前值大於下乙個值的節點a,接著將該節點a的方向指向節點的下下個位置c,找到最後乙個個比當前節點的下乙個節點b的值還有小的節點e,將節點b的方向指向節點e的下乙個節點q,再將節點e的方向指向節點b,完成整個兩兩交換的過程;

舉例來講如下:

class

solution(object):

definsertionsortlist(self, head):

""":type head: listnode

:rtype: listnode

"""if

nothead

ornot

head.next:

return

head

cur = head

# 新建乙個無用的節點

dummy = listnode(0)

dummy.next = head

while

cur.next:

ifcur.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 對鍊錶進行插入排序

對鍊錶進行插入排序。插入排序的動畫演示如上。從第乙個元素開始,該鍊錶可以被認為已經部分排序 用黑色表示 每次迭代時,從輸入資料中移除乙個元素 用紅色表示 並原地將其插入到已排好序的鍊錶中。definition for singly linked list.public class listnode ...

147 對鍊錶進行插入排序

難度 中等 題目描述 思路總結 為什麼鍊錶題中等難度的都能做出來,而其它型別的題不行呢,值得思考。題解一 class solution def insertionsortlist self,head listnode listnode dummy listnode 0 while head cur ...

147 對鍊錶進行插入排序

第一次嘗試 對鍊錶進行插入排序。鍊錶為無頭結點 單向 不迴圈。由於涉及到結構體,所以寫不了完整的測試 下面展示的 為leetcode中寫的 leetcode鏈結 struct listnode insertionsortlist struct listnode head 設定虛頭結點 struct ...