基于单链表的快速排序
2013-10-31 09:55
190 查看
struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; void qsortList(ListNode* begin, ListNode* end) { if(begin==NULL||begin==end) return; ListNode* index = begin; ListNode* pnode = begin->next; ListNode* end1 = index; while(pnode != end) { if(pnode->val < begin->val) { end1 = index; index=index->next; swap(index->val, pnode->val); } pnode = pnode->next; } if(pnode->val < begin->val) { end1 = index; index=index->next; swap(index->val,pnode->val); } swap(index->val, begin->val); if(begin!=index) qsortList(begin, end1); if(index != end) { ListNode* begin2=index->next; qsortList(begin2, end); } }
相关文章推荐
- 基于单链表的通讯录
- 基于快速排序的几种算法变型
- JAVA实现单链表快速排序
- 基于单链表的多项式问题
- 基于单链表和环形队列的生产消费模型
- 单链表中基于箱子的基数排序
- 基于单链表的冒泡排序简易学生成绩排序程序
- 排序之基于单链表插入排序
- 无头单链表的操作(基于前面的修改版)
- 深入单链表的快速排序详解
- 基于快速排序思想的随机排列的数组中找第k小的数
- java 基于单链表的实现的栈
- 基于快速排序思想的随机排列的数组中找第k小的数
- 单链表的快速排序
- 单链表中基于箱子的基数排序
- 基于单链表的班级通讯录
- (转)基于快速排序的TOPK算法
- 基于单链表的快排
- 基于单链表的两个非递减有序表的合并
- 基于单链表的链队列