2015年4月11日

摘要: 数组实现双端队列的时候注意区别判断上溢和下溢。用两个栈实现队列,就相当于把两个栈底靠在一起(背靠背),一个栈用来出队列,一个栈用来进队列。这个队列的操作时间大部分时候是常数时间,除了出列的栈为空,需要把进列的栈全部转移过去,再出列。Back()操作和Pop()操作类似,也是这样。而两个队列实现栈,队... 阅读全文
posted @ 2015-04-11 20:01 Natsukashiii 阅读(1767) 评论(0) 推荐(1) 编辑
摘要: 顺序统计量有关算法得与快速排序的分割联系起来#include #include using namespace std;typedef int index;index Rand_Partition(int *a, index p, index r);index Partition(int *a, i... 阅读全文
posted @ 2015-04-11 16:26 Natsukashiii 阅读(151) 评论(0) 推荐(0) 编辑

2015年4月10日

摘要: It is amazing!列排序算法看起来很奇怪,但是它真的可以用来对所有数据排序,只不过需要有一些条件。列排序算法是用于包含n个元素的矩形数组的排序,这个数组r行s列,满足下面三个条件:1) r为偶数2) s为r的因子3) r大于等于2s2这里就不去证明这个算法的正确性,证明见算法导论思考题8-... 阅读全文
posted @ 2015-04-10 19:17 Natsukashiii 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 使用STL中priority_queue(由最大最小堆实现的)来实现。注意传递参数的时候需要传递三个。模板声明:priority_queue这里的实现要求输入完全正确,所以代码移植性非常差。#include #include #include using namespace std;typedef ... 阅读全文
posted @ 2015-04-10 13:32 Natsukashiii 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 水壶问题要求我们把红蓝水壶进行配对。如何才能让红蓝水壶一一对应,那就是分别对它们进行排序。所以这里借助快排的思想来进行排序,红水壶数组使用蓝水壶中的pivot来排序,蓝水壶使用红水壶中的pivot来排序。由于前提条件红水壶有一个对应的蓝水壶,反之亦然,且红水壶内部各不相同,所以排序就很简单,稍微修改... 阅读全文
posted @ 2015-04-10 10:30 Natsukashiii 阅读(574) 评论(0) 推荐(0) 编辑

2015年4月9日

摘要: 第一步,先按数据的长度排序,计算出数据的长度(一般大小为正整数),然后按计数排序的方法排序第二步,对相同长度的数据进行基数排序。基数排序采用计数排序作为稳定排序。这里遇到了一个问题,第二问对字符串按字典序排列(a#include #include using namespace std;const ... 阅读全文
posted @ 2015-04-09 22:37 Natsukashiii 阅读(779) 评论(0) 推荐(0) 编辑

2015年4月8日

摘要: 题目读起来有点晦涩,理解之后思路比较容易想到。其实就是排序的元素换成了闭区间,而闭区间‘相等’就是这些区间有公共的区域(等价类),这样就类似于习题7.2了,返回两个下标,它们之间是相等的元素,前面是‘较小’的区间,后面是‘较大’的区间。那么如何求公共子区间呢,我这里是从前往后遍历数组,如果有交叠,... 阅读全文
posted @ 2015-04-08 13:21 Natsukashiii 阅读(590) 评论(0) 推荐(0) 编辑

2015年4月7日

摘要: 计算机中用位来表示整数,一种方式只能表示非负数,一种可以表示有符号数。无符号数编码: 补码编码: 由上面的定义可以知道补码与无符号之间的对应关系(见下式),最高位为0时,补码与无符号表示是一样的,而最高位为1时,举个例子,补码表示的-1对应于无符号数的4294967295(这里指的是32位数)。 在... 阅读全文
posted @ 2015-04-07 21:25 Natsukashiii 阅读(2041) 评论(0) 推荐(1) 编辑
摘要: 个人总结:1.int **p和 int a[M][N]之间的区别: 1) int **指向指针的指针;而后者的类型是数组名,类型为 int (*)[N],即指向的是整个一行。 2) (a+1) 表示地址增加M*sizeof(int),需要注意的一点是a[i]是第i行开头的地址,&a和a的值是一样的。... 阅读全文
posted @ 2015-04-07 21:11 Natsukashiii 阅读(196) 评论(0) 推荐(0) 编辑

2015年4月6日

摘要: 快速排序通常是实际排序中应用最好的选择,因为平均性能很好,且是原址排序,不稳定。书上的大部分内容在分析其运行时间,感觉看一下就好了(还是蛮喜欢数学的,可是。。。)#include #include #include using namespace std;//实际应用比较多,原址排序typedef ... 阅读全文
posted @ 2015-04-06 21:36 Natsukashiii 阅读(339) 评论(0) 推荐(0) 编辑

导航