首页 > 代码库 > Insertion Sort List
Insertion Sort List
Sort a linked list using insertion sort.
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | /** * 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 *root = new ListNode(-INT_MAX); root->next = head; ListNode *pre = head; head = head->next; while (head){ ListNode *insert = root; while (insert != head&& insert->next->val <= head->val) insert = insert->next; if (insert==head){ pre = head; head = head->next; } else { ListNode *tmp = insert->next; insert->next = head; pre->next = head->next; head->next = tmp; head = pre->next; } } head = root->next; delete root; return head; } }; |
插入排序,写一下数组的插入排序:
?
1 2 3 4 5 6 7 8 9 10 | void insertionSort(vector< int > &vec){ for ( int i = 1; i < vec.size();++i){ int key = vec[i]; int j = i - 1; for (; j>=0&&vec[j]>key; --j){ vec[j+1] = vec[j]; } vec[j+1]=key; } } |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。