摘要: 不好想,用桶排序解决。 int findMissingPostive(int A[], int n) { bucket_sort(A, n); for (int i = 0; i < n; i++) if (A[i] != i + 1) return i + 1; return n + 1; } v 阅读全文
posted @ 2016-07-12 17:29 牧马人夏峥 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 采用归并排序,通过定义快、慢两个指针来找到中点,再采用之前的排序算法进行归并。 ListNode *listSort(ListNode *head) { //定义快慢指针,找到链表中心 ListNode *slow=head,*fast=head; while (fast->next!=nullpt 阅读全文
posted @ 2016-07-12 16:52 牧马人夏峥 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 对链表进行插入排序,比对数组排序麻烦一点。 ListNode *insertSortList(ListNode *head) { ListNode dummy(-1); for (ListNode *cur = head; cur != nullptr;) { //将当前结点插入到此结点之后 aut 阅读全文
posted @ 2016-07-12 16:27 牧马人夏峥 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 和合并数组类似。 ListNode *mergeList(ListNode *l1, ListNode *l2) { if (l1 == nullptr)return l2; if (l2 == nullptr)return l1; ListNode dummy(-1); ListNode *p = 阅读全文
posted @ 2016-07-12 15:40 牧马人夏峥 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 比较简单的一道题,这个方法是从后往前比较,效率更高。 void merge(int A[], int m, int B[], int n) { int ia = m - 1, ib = n - 1, icuur = m + n - 1; while (ia >= 0 && ib >= 0) { // 阅读全文
posted @ 2016-07-12 15:20 牧马人夏峥 阅读(93) 评论(0) 推荐(0) 编辑