Ultra-QuickSort
Time Limit: 7000MS
Memory Limit: 65536K
Total Submissions: 43816
Accepted: 15979
Description
In this problem, you have to analyze a particular sorti...
分类:
编程语言 时间:
2015-01-12 16:45:05
阅读次数:
256
找到两个已排序数组的中间值,如输入{2,3,5},{4,6},输出4,若输入{2,3,5},{4,6,8},则输出4.5。因为是两个已排序数组,我想到的是用归并排序的思想,排序后数组中间的那个数,或中间两个数的平均数即为所求的median。
{CSDN:CODE:577991}...
分类:
其他好文 时间:
2015-01-12 16:31:23
阅读次数:
186
归并排序也是一种很优越的排序方式,并且时间复杂度为O(nlogn),而且归并排序的思想很有意思很有启发,包括排序过程和时间复杂度的推导等等,具体可以google一下。下面给出二路归并的实现代码。#includeusing namespace std;void merge(int data[],i.....
分类:
编程语言 时间:
2015-01-12 00:08:16
阅读次数:
260
稳定性:
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,
冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
复杂度
冒泡法: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。不说了。
直接插入排序:O(n*n)
希尔排序:算法的复杂度为n的1.2次幂
选择排序:O(n*n)
快速排序:不稳定,平均时间复杂度O(nlog...
分类:
编程语言 时间:
2015-01-10 01:09:47
阅读次数:
222
第一篇博客实现了三种最基本最简单的排序算法,本篇文章将在这三种算法的基础上稍微演变一下。
1.快排
光从名字看就知道速度肯定不差,前一篇讲的冒泡排序,怎么看都不算是一种好的排序算法,里面充斥了太多的无谓的交换动作,时间复杂度倒是很稳定o(n^2),但对于排序算法实在说不过去。快排是冒泡排序的改进版,思路就是分治,将一个序列随机按照某个值分成两个子序列,子序列A里面的值全部比该值大,另一个子序列...
分类:
编程语言 时间:
2015-01-09 23:47:36
阅读次数:
443
和分治思想的第一次相遇
当问题的规模是可以划分的时候,分治的算法往往是很有效的:
不断分割问题的规模,直到子问题的规模足够小便直接求解,之后不断整合子问题的解得到更大规模的解,最后得到完全解。
归并排序就是分治算法的一个简单的例子。
可能有人觉得快速排序也是属于分治算法,但我不这么觉得,因为快速排序是先得到大问题的解的一部分,再靠子问题来完成解,
并没有整合子问题这一步,所以硬要说的...
分类:
编程语言 时间:
2015-01-08 02:09:41
阅读次数:
290
package?cn.hcm;
public?class?MergeSort?{
?/**
??*?合并两个有序数组
??*?@param?source
??*?@param?start
??*?@param?mid
??*?@param?end
??*?@param?sourceCopy
??*/
?priva...
分类:
编程语言 时间:
2015-01-07 11:18:18
阅读次数:
174
python有几个内置的函数很有意 思:map/filter/reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是python列表方法的三架马车。filter() 函数:filter函数的功能相当于过滤器。调用一个布尔函数bool_func...
分类:
编程语言 时间:
2015-01-06 23:06:52
阅读次数:
195
一:起因
(1)包括冒泡算法、快排算法、插入排序算法等;还有基于外部排序的归并排序(以二路归并排序为例 )
但是基本上在一个数量级上;
(2)
mergesort (归并排序) 可以应用在外部排序,这与基于内存的quicksort(快速排序)略有不同,他们的算法复杂度都可以达到O(nlogn)
(3)mergesort 是稳定的排序算法,需要额外的空间开销O(n)...
分类:
其他好文 时间:
2015-01-06 17:52:40
阅读次数:
241