算法
文章平均质量分 77
actonZX
Hello World
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
qsort 微软内部实现
void __fileDECL qsort ( void *base, size_t num, size_t width, int (__fileDECL *comp)(const void *, const void *) )#endif /* __USE_CONTEXT */{ char *lo, *hi;原创 2013-09-16 21:19:24 · 1151 阅读 · 0 评论 -
HeapSort
在nlgn的复杂度下可以实现排序,# include # define HEAP_SIZE 7int Heap_Size = HEAP_SIZE - 1 ;int Parent(int i){ return i/2;}int Left(int i){ return 2*i;}int Right(int i ){ return 2*i+1;}void原创 2013-10-01 19:15:41 · 547 阅读 · 0 评论 -
计数排序的分析与实现
/*2013年10月2日21 计数排序,它是一个稳定的排序的方法,因为在最后一次对原来的数进行安排位置时候需要其从最后一个位置开始 它的复杂度是O(n) (本来为O(n+K)的复杂度,考虑渐进的思想,使k趋向于n,则为O(n)) 该算法的缺点: 也正是其的要求的地方,要求其待排序的数字范围不能跨度太大,需要在一定范围内 但该算法虽然说是O(n)的复杂度,但是其原创 2013-10-02 21:42:42 · 815 阅读 · 0 评论 -
题目:请给出一个运行时间为Θ(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
解题思路: 直观的方法是直接计算集合中两两元素的和,然后判断是否存在x,但时间复杂度为Θ(n^2),不符合题目的要求,也不是一个好的解决问题的方法,下面两种方法要好一些: 第一种是《算法导论》的教师手册上提供的思路,构建一个辅助集合S',通过查找辅助集合S'和原集合合并后的集合中是否有重复的元素来判断,具体步骤如下: 1)对集合S进行排序 2)构建辅助集合S原创 2013-09-15 23:37:01 · 5225 阅读 · 1 评论 -
堆排序的应用之优先级队列的实现
/*2013年10月3日by--acton 优先级队列: 1.最大优先级队列的一个应用是在一台分时的计算机上进行作业调度,这种队列要执行的各个作业及它们之间的的相对优先的关系加以记录,当一个作业完成或者中断的时候,用Extract_Max将其从就绪的要执行的队列中remove掉,然后对这个堆进行再次的建立一个大顶堆,然后选出优先级相对较高的程序进行执行,在任何时候原创 2013-10-03 11:31:55 · 938 阅读 · 0 评论 -
线性的时间内选择出rank n的元素
/* 2013年10月3日 by --- acton在线性的时间内选择出rank n 的元素,一般来说找最值是特殊的情况,但是这里列出的算法是查找一般的情况,也适用于最值的情况这个算法是基于快速排序上面的Partition上写的,但是这个算法的递归树却是 T(n) = T(n/2) + O(n), 解得递归树的运行的时间为O(n)把问题的规模每次都缩小,但是原创 2013-10-03 15:32:18 · 773 阅读 · 0 评论 -
QuickSort 快速排序的分析与实现
/* 快速排序(QuickSort) 2013年10月3日 by --- acton 算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。(1) 分治法的基本思想 分治法的基本思想是:将原问题分解原创 2013-10-03 12:33:51 · 724 阅读 · 0 评论 -
斐波那契数列算法分析
转自http://www.cnblogs.com/CCBB/archive/2009/04/25/1443441.html斐波那契数列算法分析背景:假定你有一雄一雌一对刚出生的兔子,它们在长到一个月大小时开始交配,在第二月结束时,雌兔子产下另一对兔子,过了一个月后它们也开始繁殖,如此这般持续下去。每只雌兔在开始繁殖时每月都产下一对兔子,假定没有兔子死亡,在一年后总共会有多少对兔转载 2013-09-18 10:40:01 · 1196 阅读 · 0 评论
分享