Middle-题目63:147. Insertion Sort List

原创 2016年05月31日 16:33:50

题目原文:
Sort a linked list using insertion sort.
题目大意:
使用插入排序对单链表排序。
题目分析:
使用直接插入排序,即从第二个元素开始,每次寻找它应该在前面的有序区间内所在的位置。
源码:(language:c)

struct ListNode* insertionSortList(struct ListNode* head) {
    if(!head || !head->next)
        return head;
    else {
        struct ListNode* sortedHead = (struct ListNode*)malloc(sizeof(struct ListNode));
        sortedHead->val = head->val;
        sortedHead->next = NULL;

        for (struct ListNode* node = head->next; node; node = node->next) {
            if(node->val <= sortedHead->val) { // this node is smaller than the smallest node of sortedHead
                struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
                newNode->val = node->val;
                newNode->next = sortedHead;
                sortedHead = newNode;
            }
            else {
                struct ListNode* temp;
                for(temp = sortedHead; temp; temp = temp->next) {
                    if(temp->val <= node->val && (!temp->next || temp->next->val >node->val)) { //insert this node after temp
                        struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
                        newNode->val = node->val;
                        newNode->next = temp->next;
                        temp->next = newNode;
                        break;
                    }                       
                }
            }
        }
        return sortedHead;
    }
}

成绩:
76ms,beats 25%,众数72ms,25%
cmershen的碎碎念:
本题代码还是过于复杂,而且可以在有序区使用二分查找优化之。

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

相关文章推荐

LeetCode 147 Insertion Sort List

LeetCode 147 Insertion Sort List

LeetCode#147. Insertion Sort List

链表插入排序

【Leet Code】147. Insertion Sort List---Medium

Sort a linkedlist using insertion sort. 思路: 插入排序主要有直接插入排序和希尔插入排序, 1) 直接插入排序 把一个记录插入到一个已经排好序的有序表中,从而得...

LeetCode147_Insertion Sort List(用插入排序算法对链表进行排序) Java题解

题目: Sort a linked list using insertion sort. 题解: 插入排序就是先对一部分进行排序 排序好后将未排序的插入到已经排序好的队列中  在插入...

Leetcode刷题记——147. Insertion Sort List(插入排序链表)

一、题目叙述: Sort a linked list using insertion sort. 二、解题思路: Medium题,啊。。。我今天头晕脑胀,写的不太...

LeetCode 147 Insertion Sort List

题意单链表的插入排序题解1:边界条件判断,如果单链表中head为空或只有head,直接返回 2:设置一个结点指针p指向head的下一个结点,将head后的无序表断开,等待排序 3:while循环开...

[LeetCode] 147. Insertion Sort List java

/**147. Insertion Sort List * @param head * @return 链表,使用插入排序 */ public ListNode...

Leetcode NO.147 Insertion Sort List

本题题目要求如下: Sort a linked list using insertion sort. 题目相当之简单,而且本题都把算法限定为insertion sort,所以也没有改进的余地,基本来...

[LeetCode]147. Insertion Sort List 深入浅出讲解和代码示例

本题涉及的知识点是链表。 Sort a linked list using insertion sort. 3、审题 给一链表,用插入法排序 4、解题思路 在链表插入排序时,将链表分割成两段[ [...

Leetcode 147. Insertion Sort List

Sort a linked list using insertion sort.s思路: 1. insertion sort这个思路是这样的:遍历从第二个数据开始,第一个数据默认是排好序的,把第二个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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