数组中任取两个数字,如果前面的数字大于后面的数字称为一个逆序对如:1,2,1,2,1 有3个逆序对思路:知道O(N2)肯定是错的。开始想hash,试图找到O(n)的算法,想了很久,找不到。后来想到排序,用原数组与排好序的数组对比,我写的快排,还是不对。想了几个小时,无奈看答案,原来是用变形的归并排序...
分类:
编程语言 时间:
2015-07-10 00:20:27
阅读次数:
146
浮动有个缺点:脱离了原来的文档流,导致父容器无高度。使用inline-block不会脱离文档流,且无忘记清空浮动的困扰
并排的div都设置position:inline-block,vertical-align:top...
分类:
其他好文 时间:
2015-07-09 22:42:27
阅读次数:
167
Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
思路:此题是由合并两个排序链表演化而来,刚开始,想法比较简单,像求最大公共前缀一样,逐一求解;但是最后超时,所以马上意识到出题方是为了使用归并和分...
分类:
编程语言 时间:
2015-07-07 09:31:31
阅读次数:
131
排序是生活中经常面对的问题,而根据排序过程中借助的主要操作,我们把内排序分为:插入排序、交换排序、选择排序和归并排序。这些都是比较成熟的排序算法,我们学习这些排序算法主要目的是通过学习它们来提高我们编写算法的能力,以便于解决更多复杂和灵活的应用性问题。冒泡排序(Bubble Sort)基本思想:两....
分类:
编程语言 时间:
2015-07-07 00:40:03
阅读次数:
203
Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
思路:对两个已排序的单链表合并。算法上比较简单,与归并排...
分类:
编程语言 时间:
2015-07-06 21:48:48
阅读次数:
166
归并:将两个或两个以上的有序序列合并成一个新的有序序列,这种归并方法称为2路归并;
将3个有序序列归并为一个新的有序序列,称为3路归并;
将多个有序序列归并为一个新的有序序列,称为多路归并。
合并过程:
1、设置i,j 和 p 三个指针,其初值分别指向这三个记录区的起始位置;
2、合并时依次比较R[i]和R[j]的关键字,取关键字较小的记录复制到R1[p]中;
3、然后将被复制记录的指针 i 或 j 加1,以及指向复制位置的指针 p 加1;
4、重复这一过程直至两个输入的子文件有一个已全部复制完毕(不妨称其...
分类:
编程语言 时间:
2015-07-06 12:24:52
阅读次数:
171
二路归并排序 归并排序采用了一种”分而治之“的策略:将原问题分解成N个规模较小而结构与原问题相似的子问题;递归求解这些子问题,然后合并其结果,从而得到原问题的解。分治模式一般遵循以下三个步骤:分解(Divide):将原问题分解成若干子问题;解决(Conquer):递归地求解各子问题。若子问题足够小....
分类:
编程语言 时间:
2015-07-05 23:48:19
阅读次数:
184
目录:算法一:快速排序算法算法二:堆排序算法算法三:归并排序算法四:二分查找算法算法五:BFPRT(线性查找算法)算法六:DFS(深度优先搜索)算法七:BFS(广度优先搜索)算法八:Dijkstra算法算法九:动态规划算法算法十:朴素贝叶斯分类算法算法一:快速排序算法快速排序是由东尼·霍尔所发展的一...
分类:
编程语言 时间:
2015-07-05 18:08:51
阅读次数:
259
归并排序的核心思想是将已经排好序的A[p~q],和A[q~r](其中A为数组,p、q、r为数组下标)合并为单一已排序的数组A[p~r]。实现的代码如下:void _Merge(int* input,int* output, int low, int mid, int high){ int ...
分类:
编程语言 时间:
2015-07-04 12:39:49
阅读次数:
128