對鍊錶進行插入排序

2021-09-10 09:29:10 字數 990 閱讀 6558

1. 問題描述

對鍊錶進行插入排序。

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

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

插入排序演算法:

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

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

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

示例 1:

輸入:4->2->1->3輸出:1->2->3->4
示例 2:

輸入:-1->5->3->4->0輸出:-1->0->3->4->5
2. **實現以前陣列插入排序,是兩重迴圈,第一重是遍歷整個陣列,第二個就是反向迴圈,找到前面第乙個小於當前數的值,並插到它後面。但鍊錶無法反向,所以第二重迴圈就乾脆正向遍歷一次,找到第乙個大於當前結點值的結點,並插到它前面。

用p、q分別記錄當前結點cur的前、後結點。用pre遍歷一次找到要插入位置的前驅結點,若需要交換結點位置,則把cur插入到pre後面,再連線p和q;下一輪p不需要移動,q往後移乙個。若不需要交換結點位置,下一輪p和q均需要後移乙個。(q相當於記錄下一輪的cur)

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution

cur = q;

}return newhead.next;}}

對鍊錶進行插入排序

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

對鍊錶進行插入排序

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

對鍊錶進行插入排序

題目 示例 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...