算法复习
文章平均质量分 81
olso
这个作者很懒,什么都没留下…
展开
-
算法--插入选择冒泡排序
算法排序(n^2)时间复杂度是O(n^2)的排序有插入,选择,冒泡。由于算法思想比较简单易懂,代码也不复杂。我们就简单讲讲。插入一个元素是有序的,从第二个元素开始,依次将每个元素插入到前面序列的对应位置,最终整个序列有序。外层n-1趟。void insertSort(int a[], int n){ int i,j,k;原创 2014-09-26 15:55:45 · 416 阅读 · 0 评论 -
Best Time to Buy and Sell Stock
最近遇到一道题,数组表示当日股价,最多进行2次买卖,而且不能连续买,只能买卖买卖。问能赚到的最大值。知道这是一道类型题,但是我想自己独立解决。不过能力有限,最后还是参考了网络中的大牛解法。这里做一下总结。参考推库, 一个神奇的网站。http://www.tuicool.com/articles/rMJZj2能够感到这是一道动态规划的题,分成2部分,然后求和的最大值,但是原创 2015-04-28 22:22:54 · 400 阅读 · 0 评论 -
算法--归并排序
排序归并排序核心思想:对已知的已排序的几个序列进行归并排序。而且对于只有一个元素的序列,则他是有序的。那么对于一个待排序的序列,从一个元素开始,两两进行归并,则形成了2个元素为一组的一些已排序的子序列。再两两归并,形成4个为一组的子序列。依次进行归并,知道归并成一个序列,则该序列已排序。分治:(1)2个有序的子序列如何归并?(原创 2014-09-25 20:15:35 · 439 阅读 · 0 评论 -
算法---二叉排序树
算法---二叉排序树定义:二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;数据结构:原创 2014-11-04 19:29:39 · 437 阅读 · 0 评论 -
数组元素循环左/右移问题
回顾以前写的算法,看到一个问题----循环左/右移动问题。原创 2014-10-29 20:48:08 · 1761 阅读 · 0 评论 -
排序算法性能和使用场景总结
排序算法性能和使用场景总结按平均时间将排序分为四类:(1)平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlgn))排序 如快速、堆和归并排序;(3)O(n1+£)阶排序 £是介于0和1之间的常数,即0(4)线性阶(O(n))排序 如桶、箱和基数排序。转载 2014-10-24 20:50:31 · 420 阅读 · 0 评论 -
算法---基数排序
基数排序一、算法描述:对于排序问题,大部分的方法是基于比较大小然后交换位置。基数排序就不是基于比较的。它将整形10进制按每位拆分,然后从低位到高位依次比较各个位。主要分为两个过程:(1)分配,先从个位开始,根据位值(0-9)分别放到0~9号桶中(比如53,个位为3,则放入3号桶中)(2)收集,再将放置在0~9号桶中的数据按顺序放到数组中重复(1)(2)过程,从个位到最高位(比如原创 2014-10-24 20:35:16 · 517 阅读 · 0 评论 -
算法--快速排序
排序 快速排序快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。分治法的基本思想原创 2014-09-29 09:53:27 · 459 阅读 · 0 评论 -
N个元素中选最大最小
N个元素中选最大最小问题描述:从N个元素中,选出最大元素和最小元素。分析复杂度。方法:方法有三种。方法一:最笨的方法,循环一次找出最大的算素。再循环一下找到最小的。这里2次循环可以放在一起,作为小小的优化。比较次数:2* (N – 1) = 2N – 2。代码:方法二:取前两个元素比较出原创 2014-10-23 21:18:11 · 1122 阅读 · 0 评论 -
算法---堆排序
排序堆排序核心:将数组看作一棵完全二叉数,对于每一棵子树,都有根不小于所有子孙节点,这样的树,称为大顶堆(对应的有小顶堆,不过以下堆都默认为大顶堆)。若数组中元素符合堆的性质,则堆顶元素为最大值。将最大值和最后一个元素交换,此时,1~n-1只有1号元素不满足性质,调整之后与当前堆最后一个元素交换。一次类推进行排序。(1)如何将无需序列建堆?(原创 2014-09-24 10:54:55 · 407 阅读 · 0 评论 -
正态分布,泊松分布,指数分布的c/c++代码
正态分布,泊松分布,指数分布的c/c++代码在做实验的时候,需要产生符合某种分布的随机数。这里总结一下正态分布,泊松分布和指数分布的算法和对应c/c++代码。# 参照算法和代码可以转换成对应的其他编程语言原创 2016-03-09 21:40:03 · 17106 阅读 · 1 评论