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

2022-05-25 05:21:09 字數 834 閱讀 8892

插入排序演算法:

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

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

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

示例 1:

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

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

示例 2:

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

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

乙個指標指向當前已排序的最後乙個位置,這裡用的是head指標

另外乙個指標pre,每次從表頭迴圈,這裡用的是表頭指標

每次拿出未排序的節點,先和前驅比較,如果大於或者等於前驅,就不用排序了,直接進入下一次迴圈。

如果前驅小,則進入內層迴圈,依次和pre指標比較,插入對應位置即可。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

listnode* pre = ret;

while (pre->next)

pre = pre->next;

}listnode* cur = head->next;

head->next = cur->next;

cur->next = pre->next;

pre->next = cur;

}return ret->next;

}};

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

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

147 對鍊錶進行插入排序

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

147 對鍊錶進行插入排序

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