文章分类 - 编程珠玑
摘要:下面就从编程珠玑的第二章算法讲起,首先请看问题描述:将一个n元一维向量向左旋转i个位置。例如:当n=8时且i=3时,向量abcdefgh旋转为defghabc。简单的代码可以使用一个n元的中间变量在n步内完成工作,下面介绍一些更简便的算法。1:杂技算法: 移动x[0]到临时变量t,然后移动x[i]到x[0],x[2i]到x[i],依次类推(将x中的所有下标对n取模),直到返回到取x[0]值的元素,此时改为从t取值然后终止过程,当i为3时n为12时,元素安如下顺序进行移动:(此代码用到了求最大公约数的算法) 1 #include<iostream> 2 3 using namespa
阅读全文
摘要:问题描述:一个磁盘文件中存在1000万个数据,每个数据都是7位的整数,,每条数据值出现一次,如何给该文件的数据进行排序输出。简单的解决方案:利用位图结构进行排序 因为每个7位十进制数都表示一个小于1000万的整数,我们使用一个具有1000万个位的字符串来表示该文件,其中只有当整数i在文件中存在时,第i位为1。 这种表示利用了改问题的三个排序问题中不常见的属性:输入数据限制在相对的较小的范围内;数据没有重复;而且对于每个数据而言,除了单一整数外,没有任何其它关联数据。分为三个阶段来编写程序/*第一阶段 初始化 使得每位都为0*/for i=[0,n) bit[i]=0;/*第二阶段...
阅读全文

浙公网安备 33010602011771号