leetcode147 對鍊錶進行插入排序

2021-10-09 08:08:00 字數 469 閱讀 1920

傳送門

輸入: 4->2->1->3

輸出: 1->2->3->4

關鍵是幾個鍊錶節點的作用:

dummy指向第乙個節點,一是用於結果輸出,二是尋找插入位置時用於回到起點

cur用於遍歷的節點

pre是cur的前驅,同時也是當前已排序鍊錶尾節點。因為每次插入一次之後,pre都會指向下乙個遍歷節點

臨時節點p: cur應該插入的位置的前驅,p每次從dummy開始遍歷,

但是注意: p是取的p.next的val和cur比較的(要不然沒辦法把插入前乙個位置next置位)

public listnode insertionsortlist

(listnode head)

else

}return dummy.next;

// head指的節點可能被排擠到後面,不能返回head

}

Leetcode 147 對鍊錶進行排序

對鍊錶進行插入排序。插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。重複直到所有輸入資料插入完為止。示例 1 輸入 4 2 1 3 輸出 1 2 3 4 到了鍊...

LeetCode 147 對鍊錶進行插入排序

插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。重複直到所有輸入資料插入完為止。方法1 嚴格按照演算法說明,在原始列表中進行操作,利用4個鍊錶指標分別表示當前元...

LeetCode147 對鍊錶進行插入排序

對鍊錶進行插入排序。插入排序的動畫演示如上。從第乙個元素開始,該鍊錶可以被認為已經部分排序 用黑色表示 每次迭代時,從輸入資料中移除乙個元素 用紅色表示 並原地將其插入到已排好序的鍊錶中。插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次迭代中,插入排...