zoukankan      html  css  js  c++  java
  • leetCode(5):Sort List 分类: leetCode 2015-06-17 09:45 170人阅读 评论(0) 收藏

    Sort a linked list in O(n log n) time using constant space complexity.

              分析:排序算法中,堆排序、归并排序、快速排序、希尔排序的时间复杂度是nlogn,堆排序和归并排序对下标依赖性比较强,比较适合顺序表的排序,对链表处理起来比较复杂。希尔排序用的比较少。所以我选择的是快速排序,结果是正确的,但时间超出限制了。如果有大神做过同样的题目,跪求告知解法~~~~


    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
       ListNode* partion(ListNode* head,ListNode* start,ListNode* end,ListNode** newEnd)
        {
        	int key=end->val;
        	ListNode* pre=start;
        	ListNode* behind=start;
        	
        	*newEnd=behind;
        	while(pre!=end)
        	{
        		if(pre->val < key)
        		{
        			if(pre!=behind)
        			{
        				int tmp=pre->val;
        				pre->val=behind->val;
        				behind->val=tmp;
        			}
        			
        			*newEnd=behind;
        			behind=behind->next;							
        		}
        		pre=pre->next;	
        	}
        	
        	int tmp=pre->val;
        	pre->val=behind->val;
        	behind->val=tmp;
        	return behind;	
        }
        void qSort(ListNode* head,ListNode* start,ListNode* end)
        {
        	if(start!=end)
        	{
        		ListNode* newEnd=NULL;
        		ListNode* mid=partion(head,start,end,&newEnd);
        		if(mid!=end)
        			qSort(head,mid->next,end);
        		qSort(head,start,newEnd);
        	}
        }
        ListNode* sortList(ListNode* head) {
            if(head==NULL)
        		return NULL;
        	ListNode* p=head;	
        	while(p->next)
        		p=p->next;		
        	qSort(head,head,p);	
        	return head;
        }
    };


  • 相关阅读:
    通过python连接数据库以及操作
    切片
    文件的内容读写(二)
    文件的内容读写(一)
    python数据类型(四)之嵌套类型
    python数据类型(三)之字典类型
    python数据类型(二)之数组和数组函数
    Python的内存管理
    *args 和 **kwargs 的区别
    python的命名空间
  • 原文地址:https://www.cnblogs.com/zclzqbx/p/4687112.html
Copyright © 2011-2022 走看看