鍊錶排序 147 對鍊錶進行插入排序

2021-10-06 10:40:44 字數 1127 閱讀 4212

對鍊錶進行插入排序。

插入排序的動畫演示如上。從第乙個元素開始,該鍊錶可以被認為已經部分排序(用黑色表示)。

每次迭代時,從輸入資料中移除乙個元素(用紅色表示),並原地將其插入到已排好序的鍊錶中。

插入排序演算法:

插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。

每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。

重複直到所有輸入資料插入完為止。

示例 1:

輸入:4-

>2-

>1-

>

3輸出:1-

>2-

>3-

>

4

示例 2:

輸入:-1

->5-

>3-

>4-

>

0輸出:-1

->0-

>3-

>4-

>

5

解題

若在原煉表上改動,每次遍歷鍊錶都不相同,故採用新建表頭,返回新鍊錶;

新建鍊錶

新建煉表表頭,head記錄正在新增的鍊錶節點,每次遍歷新鍊錶,將節點插入next->val不存在或者next->大於自身val的位置;

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

else cur=cur-

>next;

}return dummy.next;}}

;

class

solution

else cur=cur-

>next;

}return dummy.next;}}

;

注意點

構建dummyhead並不會使用額外空間!

只用了乙個頭節點的空間;

147 對鍊錶進行插入排序 鍊錶

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

147 對鍊錶進行插入排序

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

147 對鍊錶進行插入排序

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