
算法
文章平均质量分 83
zabery
这个作者很懒,什么都没留下…
展开
-
算法运行时间的分析
前言 本文的主要内容是 以选择排序算法为例进行算法运行时间的分析。选择排序 选择排序算法大家都很熟悉,所以不会详细介绍其原理,功能是实现数组的非降序排序。伪代码如下:SELECTION_SORT( A )原创 2011-07-16 22:00:59 · 1120 阅读 · 1 评论 -
算法的几个概念
算法的重要性:现在计算机的处理速度超级快,许多人认为算法的研究已经没有什么必要性。但是考虑下面两种情况在拥有高效处理器的计算机上使用汇编语言编写插入排序,插入排序的运行时间为c1*n2,这里假设c1 = 2在拥有低速处理器的计算机上使用低效编译器和高级语言编写合并排序算法,合并排原创 2011-07-16 19:36:56 · 396 阅读 · 0 评论 -
堆排序及其分析
前言记得在学习数据结构的时候一味的想用代码实现算法,重视的是写出来的代码有一个正确的输入,然后有一个正确的输出,那么就很满足了。从网上看了许多的代码,看了之后貌似懂了,自己写完之后也正确了,但是不久之后就忘了,因为大脑在回忆的时候,只依稀记得代码中的部分,那么的模糊,根本不能再次原创 2011-07-26 13:30:11 · 1000 阅读 · 4 评论 -
分治法分析及应用
前言本文主讲分治法的分析以及应用,有三段程序,基于二分查找方法的插入排序,合并排序以及改变合并排序来计算序列中逆序对的个数。插入排序大家都不陌生插入排序,其原版如下(最坏情况Θ(n2) ): 1: void Insertion_Sort(int a[], int p, int原创 2011-07-19 22:07:26 · 1791 阅读 · 0 评论 -
算符优先算法
给出一个表达式 2*(3-1),迅雷不及掩耳,立马知道答案为4,但是计算机可没有这样的能耐,它只知道直接计算,却不知道优先级。如此,我们需要自己用代码来告诉它算符的优先级从左至右先乘除后加减先括号内后括号外先来研究简单的算术表达式,只有+-*/()运算符算符优先表如上图,其中#为原创 2011-07-26 21:12:51 · 1030 阅读 · 0 评论 -
快速排序及其分析
前言快速排序的平均情况下是O(nlogn),但是一般都比其他运行时间为O(nlogn)的算法都要快,因为它隐藏的常数因子比较小,但是在最坏情况之下,快速排序的运行时间是O(n2)。快速排序过程快速排序采用的思想是分治思想,就像合并排序算法的思想一样,合并排序算法是从数组的中间开始原创 2011-07-27 14:35:27 · 1087 阅读 · 2 评论 -
计算机算法分析之渐进记号
前言在学习计算机算法时,知道插入排序的时间复杂度是O(n2),那O记号到底是什么意思呢?本文主要介绍几个算法分析时用到的记号。本文中有许多的记号和图片不好编辑,所以详细请看博客园的这篇文章!大O记号定义:O(g(n)) = { f(n) : 存在正常数c和n0 ,使对所有的n >原创 2011-07-19 20:19:05 · 1726 阅读 · 2 评论 -
线性排序算法
前言插入,快速,合并,堆排序等基于比较的排序算法的最坏情况下界为Ω(nlogn),最坏情况下都要进行Ω(nlogn)次比较。假设有一n个元素组成的数组(假设每个元素都不相等),那么一共有n!排列组合,而且这n!排列组合结果都应该在决策树的叶子节点上(如图1),在图1中原创 2011-07-30 18:51:42 · 800 阅读 · 1 评论 -
顺序统计量
前言本文内容主要是 寻找最大最小值,寻找第i小值,以及随机函数的改写。在一个大小为n的集合里面,第i个顺序统计量是指该集合中第i小的元素。寻找最大最小值普遍算法是遍历数组,设置max和min存储最大最小值。每个元素都与max和min比较,然后分原创 2011-08-24 22:15:34 · 1127 阅读 · 0 评论