147. Insertion Sort List

来源:互联网 发布:mac分答下载 编辑:程序博客网 时间:2024/04/27 00:43

题目:

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) {        if(head==NULL || head->next==NULL)return head;        ListNode* head2 = insertionSortList(head->next);                if(head->val<=head2->val) //the first case        {            head->next = head2;            return head;        }                ListNode* node = head2; //the second case        while(node->next && head->val>node->next->val)node = node->next;        head->next = node->next;        node->next = head;        return head2;    }};

插入排序经典版本:

void Insertsort(int a[], int n){    int i, j;    for(j=1;j<n;j++)        for(int i=j-1;i>=0&&a[i]>a[i+1];i--)            swap(a[i],a[i+1]);}




0 0
原创粉丝点击