Insertion Sort List

原创 2016年05月31日 15:58:12

Sort a linked list using insertion sort.

思路:

使用插入排序的方式将一个链表进行排序。可以根据给定的节点,先返回插入位置,然后将节点插入即可。

代码如下所示:

/**
 * 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) {
        ListNode *dummy=new ListNode(0);
        ListNode *p=head;
        while(p)
        {
            ListNode *position=getInsertPosition(dummy,p->val);
            ListNode *tmp=position->next;
            ListNode *tmp2=p->next;
            position->next=p;
            p->next=tmp;
            p=tmp2;
        }
        return dummy->next;
    }
    
    //寻找链表中的插入位置
    ListNode* getInsertPosition(ListNode *dummy,int val)
    {
        ListNode *p=dummy->next;
        
        if(p==NULL)
        {
            return dummy;
        }
        ListNode *pre=dummy;
        while(p)
        {
            if(p->val<val)
            {
                pre=p;
                p=p->next;
            }
            else
                break;
        }
        return pre;
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

(Leetcode 147)Insertion Sort List

题目的原文是这样的: Sort a linked list using insertion sort. Subscribe to see which companies asked t...

leetcode147~Insertion Sort List

Sort a linked list using insertion sort. Sort a linked list using insertion sort. 插入排序:把待排序列的数据插入到已...

[LeetCode刷题] Insertion Sort List

这个是刷的第一题,medium难度。算法没什么难度,主要是有一个edge case。maintain两个list,第一个是sort好的,第二个是没sort得部分。/** * Definition f...

[LeetCode]Insertion Sort List

Question本题难度Medium。有2种算法分别是: 递归法(省时不省空间)和迭代法(省空间不省时间)1、递归法【复杂度】 时间 O(N) 空间 O(N) 函数栈深度【思路】 由于链表只能...
  • byamao1
  • byamao1
  • 2016年12月06日 17:37
  • 79

leetcode题目解答---Insertion Sort List

题目如下: Sort a linked list using insertion sort. 使用插入排序法排列一个链表。...

景岁的Leetcode解题报告:147.Insertion Sort List (Java)

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode ...

LeetCode之147_Insertion Sort List

题目:Sort a linked list using insertion sort. 分析:单链表的插入

Insertion Sort List 链表的插入排序

插入排序是假设前面一部分已经是有序的,后面A 不满足有序,则寻找前面有序序列的合适的位置,插入A。 插入排序默认第一个是有序状态。 假设我们有3 -> 5 -> 4 ->1 -> 2这样一个链表。...

LeetCode LRU Cache & Insertion Sort List

LRU Cache  Total Accepted: 16727 Total Submissions: 120052My Submissions Design and impl...
  • kiki_yu
  • kiki_yu
  • 2014年09月03日 08:31
  • 389

【LeetCode-面试算法经典-Java实现】【147-Insertion Sort List(链表插入排序)】

【147-Insertion Sort List(链表插入排序)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Sort a linked list using inse...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Insertion Sort List
举报原因:
原因补充:

(最多只允许输入30个字)