介绍一种算法,它可以在线性时间和常数空间内,在一个数组内找出出现次数超过一半的某个数字。要解决这个问题并不难,可以使用排序或哈希,但是这两种算法都不能同时满足时间或空间的要求。然而,该算法(A Linear Time Majority Vote Algorithm)却可以在同时满足这两个条件的情况下...
分类:
其他好文 时间:
2015-06-30 20:07:42
阅读次数:
115
用三种特化模板写七种排序算法,包括四种比较算法,三种线性时间排序算法
分类:
编程语言 时间:
2015-06-20 00:13:05
阅读次数:
175
今天做了个小列子,是关于进度条的列子。1、首先拖拽一个动态面板把他缩放成相应的矩形长度,另外在动态面板下的状态的页面再次拖拽一个动态面板;2、返回home首页页面在页面交互中写onPageLoad事件,在事件中选择动态面板下的移动面板,选择移动x轴100,y轴0,动画选择线性,时间为1000毫秒。3...
分类:
其他好文 时间:
2015-06-18 17:07:52
阅读次数:
110
线性时间选择问题,实际上是随机快速排序算法的一个引申,ie,通过对随机快速排序算法的小小改动就可以实现。算法依然参考算法导论中的相关内容,需要注意的是,
代码中 的id 是指 所要 找的量在 现有区间 【low, high】中的位置, 因而,需要涉及 一定转化。 ps: mid - low + 1 表示 我们划分出来的第一个区间的长度大小。源代码如下:// ====================...
分类:
编程语言 时间:
2015-06-06 22:10:26
阅读次数:
282
1. STL有6种序列容器类型(1)vector它提供对元素的随即访问,在尾部添加和删除元素的时间是固定的,在头部或中部插入和删除元素的复杂度为线性时间。(2)deque在文件中声明。是双端队列,支持随即访问。从deque的开始与末尾位置插入和删除元素的时间是固定的。尽管vector和deque都提...
分类:
其他好文 时间:
2015-06-03 21:24:26
阅读次数:
207
题目要求:给出一个数组,只有一个数字出现一次,其他的都出现两次,找出那出现一次的数字,要求用线性的时间解出题目!
分析:因为题目要求的是用线性时间,所以类似于那种暴力解决的方法会超时,如下面这种:int singleNumber2(int *nums,int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(nu...
分类:
其他好文 时间:
2015-06-02 18:03:54
阅读次数:
120
快速排序Quicksort由Tony Hoare在1962年发明。 这是一个分治算法,而且它就在原地排序。 所谓原地排序,就是指在原来的数据区域内进行重排,就像插入排序一般。而归并排序就不一样,它需要额外的空间来进行归并排序操作。为了在线性时间与空间内归并,它不能在线性时...
分类:
编程语言 时间:
2015-06-01 20:31:54
阅读次数:
137
问题一:如何快速找出一个32位整数的二进制表达里有多少个”1”?用关于”1”的个数的线性时间?
答案:错误答案是
while(x){if(x&0x1)count++;x>>=1;}//当x为负数,那么这就是一个无限循环。
正确解答是:
while(x){x=x&(x-1);count++;}//这里就是最好的解答,并别x中有多少1就会循环几次,
效率高。...
分类:
其他好文 时间:
2015-06-01 14:48:17
阅读次数:
170
这个之前在《编程珠玑》上面看到过,当时就感觉特别神奇!
速度突破了其他排序算法的下限
后来在《算法导论》上面又看到了,感触颇深!所以一定好好啃透《算法导论》
这一系列博客的特点就是——给出每趟排序的结果
本来想着好好写一下过程,弄个图片什么的,不过觉得网上的解析太多了,都比较好,所以这些博客就算是对自己的总结吧。
#include ...
分类:
编程语言 时间:
2015-05-26 14:23:25
阅读次数:
130
在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较,因为被称为基于比较的排序。基于比较的排序算法是不能突破O(NlogN)的。简单证明如下: .....
分类:
编程语言 时间:
2015-05-24 20:20:34
阅读次数:
138