leetcode 刷题之路 27 Insertion Sort List
来源:互联网 发布:淘宝水晶宫论坛vip账号 编辑:程序博客网 时间:2024/06/05 01:54
Sort a linked list using insertion sort.
利用插入排序对一个链表进行排序。
插入排序是将待排序的序列分为部分,分别为有序的部分和无序的部分,排序时每次从无序的部分取出一个元素插入到有序的部分中合适的位置,初始时,有序部分只有一个元素,该元素自有序。根据这个思想,并为了方便起见,我们创建一个头结点dummyHead存储排序后的链表,初始阶段,该链表中只存储无序链表中的第一个元素。随后我们依次从原链表中取出元素加入到该有序链表中合适的位置,使得插入后链表始终有序,直到原链表空,排序结束。
测试通过程序:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution{public:ListNode *insertionSortList(ListNode *head){if (head == NULL || head->next == NULL) //空链表或者一个元素的链表直接返回return head;ListNode* dummyHead = new ListNode(0); //创建一个辅助的头结点,存储排序后的链表dummyHead->next = head;//和数组的插入排序一样,第一个节点自有序head = head->next;dummyHead->next->next = NULL;ListNode *p;ListNode *q;while (head != NULL){p = head;head = head->next;q = dummyHead;while (q->next != NULL)//依次将无序链表的节点插入到有序链表中{if (q->next->val <= p->val)//=保证稳定性q = q->next;elsebreak;}p->next = q->next;q->next = p;}p = dummyHead->next;delete dummyHead;return p;}};
0 0
- leetcode 刷题之路 27 Insertion Sort List
- leetcode之Insertion Sort List
- leetcode之Insertion Sort List
- leetcode之Insertion Sort List
- leetcode之Insertion Sort List
- LeetCode之Insertion Sort List
- leetcode之insertion Sort list
- leetcode之insertion-sort-list
- leetcode之insertion-sort-list
- leetCode解题报告之Insertion Sort List
- Insertion Sort List | leetcode
- Leetcode: Insertion Sort List
- [LeetCode] Insertion Sort List
- Leetcode: Insertion Sort List
- leetcode-Insertion Sort List
- [LeetCode]Insertion Sort List
- 【LeetCode】Insertion Sort List
- LeetCode | Insertion Sort List
- 7.28 使用AsyncTask异步更新UI界面
- C语言之利用函数实现strcpy函数
- C#:执行SQL语句Command
- MyEclipse快捷键大全
- dealloc的使用
- leetcode 刷题之路 27 Insertion Sort List
- C语言之有一字符串,包含数字与字母,编程去除数字。
- 【leetcode】Triangle
- Bitmap的一些操作
- NSTimer用法,暂停,继续,初始化
- 有一字符串,包含数字与字母,编程去除数字。要求:1、要求在原字符串中操作 2、使用指针处理
- 网络最大流增广路模板(EK & Dinic)
- QTP实现从outlook客户端自动发送邮件
- IOS第十天——Obj-C的属性