zoukankan      html  css  js  c++  java
  • leetcode 名单 Insertion Sort List

    Insertion Sort List

     Total Accepted: 24444 Total Submissions: 96639My Submissions

    Sort a linked list using insertion sort.




    题意:用插入排序对一个链表排序
    思路:
    插入排序对当前元素在前面已经排好的元素中找到一个位置把它插入
    能够设置一个指向头节点的dummy元素。统一操作
    注:链表中的交换节点操作,不能简单地仅仅交换节点里的value。由于value有可能是非常复杂的类,那样要调用拷贝构造函数、赋值函数,比較费时间。
    复杂度:时间O(n^2),空间O(1)

    ListNode *insertionSortList(ListNode *head) {
    	if(!head) return NULL;
    	ListNode dummy(-1);
    	dummy.next = head;
    	ListNode *cur = head->next;
    	head->next = NULL;
    	while(cur){
    		ListNode *cur_next = cur->next;
    		ListNode *pos = &dummy;
    		while(pos->next != NULL && pos->next->val <= cur->val){
    			pos = pos->next;
    		}		
    		ListNode *tem = pos->next;
    		pos->next = cur;
    		cur->next = tem;
    		cur = cur_next;
    	}
    	return dummy.next;
    }


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    HTML5 GeoLocation 地理定位
    HTML5 LocalStorage 本地存储
    JS-事件代理(委托)
    面向对象(封装、继承、多态)
    js图片预加载
    jQuery 事件
    svn无法验证
    Ext.data.Store(转)
    ExtJS实现Excel导出(转)
    <![CDATA[ ]]> 意思
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4816039.html
Copyright © 2011-2022 走看看