對鍊錶進行插入排序

2021-09-26 23:41:02 字數 917 閱讀 2152

對鍊錶進行插入排序。

插入排序演算法:

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

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

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

示例 1:

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

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

示例 2:

輸入: -1->5->3->4->0

輸出: -1->0->3->4->5

新建虛擬頭節點dummy,並指向頭節點head。新建乙個指標pre,指向虛擬頭節點。(我們要想交換節點的順序就需要持有那個節點前面的引用)

以head為指標,向後移動,如果head的下乙個節點比head節點的值大,那麼就繼續移動,如果小的話,我們就要把head的下乙個節點插入排序到前面。

移動pre指標,知道pre指標的下乙個節點比head的下乙個節點大,那麼就需要交換pre的下乙個節點和head的下乙個節點。

pre指標重新指向虛擬頭節點。

最壞情況的時間複雜度為o(n^2)。

class solution 

pre = dummy;

while (pre.next.val <= head.next.val)

/* 交換位置 */

對鍊錶進行插入排序

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

對鍊錶進行插入排序

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

對鍊錶進行插入排序

題目 示例 1 輸入 4 2 1 3 輸出 1 2 3 4 示例 2 輸入 1 5 3 4 0 輸出 1 0 3 4 5 解題思路 需要維護幾個引用來記錄當前已排序的和正在排序的節點,當找到大於當前要排序的節點值後進行插入操作 definition for singly linked list.pu...