归并排序体现了分治思想,时间复杂度是O(nlogn),空间复杂度是O(n)。 归并排序是将序列不断二分,最终分成单个元素,再两两合并,最终达到整个序列有序。 1 void msort(int l,int r) { 2 if(l==r) return; //划分到单个元素就返回 3 int m=l+( ...
分类:
编程语言 时间:
2018-08-18 17:55:38
阅读次数:
152
算法描述:快速排序是一种分治的排序算法。它将数组分为两个子数组,并将两部分独立的排列。快速排序和归并排序是互补的:归并排序将数组分成两个子数组分别排序,并将子数组归并以将整个数组排序;而快速排序将数组排序的方式则是当两个子数组都有序时整个数组也就自然有序了。 算法图示: 算法解释:选择标的元素(5) ...
分类:
编程语言 时间:
2018-08-18 13:53:35
阅读次数:
180
算法描述:将两个较小的有序数组合并成为一个较大的有序数组是比较容易的事情。我们只需要按照相同的顺序依次比较最左侧的元素,然后交替的放进新数组即可。这就是自顶向下的归并排序的实现思路。与之前的算法不同的是,归并排序需要使用额外的存储空间,用空间换时间的做法也是在排序算法中经常需要做的选择。 算法图示: ...
分类:
编程语言 时间:
2018-08-18 13:28:52
阅读次数:
195
基本的算法思想:简单的可以说将原序列划分为 左右两个序列,再令这两个序列分别为有序序列,最后合并这两个有序序列,也称为二路归并;(在递归的最后一个层次里保证左右两个序列各有一个元素,这两个元素很容易有序,递归而去它们的父级序列也就很容易有序,最后整个序列也有有序了) package sort; im ...
分类:
编程语言 时间:
2018-08-18 11:34:35
阅读次数:
114
链表 反转链表 链表倒数第k个 最小公共节点 树 红黑 树 二叉树 深度优先, 广度优先 先序,中序,后序遍历 树, 森林,二叉树互转 递归 转循环 队列 两个栈模拟一个队列 排序 简单排序, 归并排序 ,快排, 桶排 冒泡排序(bubble sort) 鸡尾酒排序(Cocktail sort,双向 ...
分类:
编程语言 时间:
2018-08-17 14:57:06
阅读次数:
150
时间复杂度要求为o(N log N)所以,排序方法采用归并排序 代码如下 package sort; class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; }} public class Te ...
分类:
编程语言 时间:
2018-08-14 22:01:45
阅读次数:
277
1.代码实现 2.注意: (1)归并排序采用的先拆分后合并的思想;递归拆分到不能继续拆分时停止拆分,然后进行比较,最后递归合并 3.时间复杂度 最优时间复杂度:O(nlogn) 最坏时间复杂度:O(nlogn) 稳定性:稳定 ...
分类:
编程语言 时间:
2018-08-12 12:14:39
阅读次数:
138
2018-08-11 23:50:30 问题描述: 问题求解: 解法一、归并排序 解法二、快速排序 ...
分类:
编程语言 时间:
2018-08-12 00:32:45
阅读次数:
171
归并排序也是一种常用的排序算法, 其时间复杂度为O(n*logn), 它的基础是分治的思想。 其基本思路就是把数组分成两组A,B, 如果这两组内的数据都是有序的, 那么就可以很方便的对这两组数据进行合并排序。 但是如何让这两组数据有序呢? 归并法的思想就是把A,B两组各自再分成两组, 依次类推, 当... ...
分类:
编程语言 时间:
2018-08-10 15:54:04
阅读次数:
132
ghj1222 先介绍几个符号的含义。 符号$\Theta$,读音西塔,既是上界也是下界,等于,严格贴紧。 符号$O$,读音殴,表示上界,小于等于,贴紧未知。 符号$o$,读音也是殴,小于,不贴紧。 符号$\Omega$,读音偶眯嘎,表示下界,大于等于,贴紧未知。 符号$\omega$,读音也是偶眯 ...
分类:
其他好文 时间:
2018-08-10 14:33:22
阅读次数:
538