链表的排序 ---链表插入排序
2015-08-10 16:29
459 查看
链表的插入排序
Insertion Sort List
1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。而对有链表,没有办法随机读取。所以插入排序,对每一个节点来说,只能从头节点开始,慢慢的向后开始比较,如果找到位置则将节点插入序列中。
代码如下,leetcode accept.
Insertion Sort List
1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。而对有链表,没有办法随机读取。所以插入排序,对每一个节点来说,只能从头节点开始,慢慢的向后开始比较,如果找到位置则将节点插入序列中。
代码如下,leetcode accept.
/** * 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 * dummy = new ListNode(-1); dummy->next = head; ListNode * pre = head ; ListNode * cur = head->next ; // 从第二个节点开始 while(cur) { if(pre->val > cur->val) // 这里假设从 头节点到 pre 节点 之间 是排好序的 { ListNode *tmp = dummy; while(tmp->next->val<cur->val) tmp= tmp->next; pre->next = cur->next; // 将pre 与cur 后面的节点连接 cur->next = tmp->next; // cur 插入适当的位置 tmp->next = cur; } else pre = pre->next ; cur = pre->next; } return dummy->next; } };
相关文章推荐
- 通过运行时添加属性小例
- 【UBI】ubi问题总结
- 在线ps制作指定像素png图标
- HOJ 13383 The Big Painting 二维字符串hash
- C 语言入门 慕课网
- centos安装setup小工具
- 随机一个数组,求最大数,并打出相应的行列
- bzoj 3196 (Tyvj 1730 二逼平衡树
- poj 3349 字符串hash
- 在线ps制作指定像素png图标 分类: 小技巧 2015-08-10 16:28 2人阅读 评论(0) 收藏
- JQuery动画animate的stop方法使用详解
- android调用系统相机和相册进行拍照裁剪处理,解决不同安卓版本存在无法加载相册的问题,处理了是否有sd卡的存在的情况
- Flash Builder4.7破解方法
- 内建对象
- HTML转PDF方案
- 谈谈如何训练一个性能不错的深度神经网络
- jQuery的DOM操作之添加元素和删除元素
- Makerfile
- POJ-1830 开关问题(高斯消元)
- tomcat配置文件serve.xml的元素及属性详解