算法
未读
数据结构与算法解析习题2.23
数据结构与算法解析习题2.23:实现对分查找使得在每次迭代中只有一个二路比较 这个题目说每次迭代只有一个二路比较不太明确是什么意思,我觉得应该是只比较一次吧,那就把判断mid的逻辑放在迭代之后了。 也不知道这么理解对不对,希望有明白人给解解惑。。
#include <stdio.h>
int
算法
未读
数据结构与算法解析习题2.19
数据结构与算法解析习题2.19:寻找主要元素 Majority Element 题干:大小为N的数组,其主元素是一个出现超过N/2的元素。 首先找出主元素的一个候选元,第二步确认该候选元是否为主元素。为找出数组A中的候选元,先构造一个数组B,比较A1和A2,如果相等,则放入到数组B中,然后比较A3和
算法
未读
数据结构与算法解析习题2.16
数据结构与算法解析习题2.16:不用递归,写出快速求幂的程序 用数组储存,x的1,2,4,8log2(n)次方,其实就是存x的2的数组index次方,储存下来。 然后把n转成2进制,转成2进制后,为1的位数,就是数组的index值,相应的元素,因为是求幂,所以这几个元素相乘。 #include <s
算法
未读
数据结构与算法解析习题2.14
数据结构与算法解析习题2.14:找出所有素数 这个主要用一个n+1(具体要不要+1根据后面给数组中元素赋值决定的,都可以)数组来记录素数的位置,比如7是素数,那么数组中index为7的元素就是1。 先把所有元素都置为1,然后在数组中非素数的index的元素,置为0,这样数组中为1的index,就是所
算法
未读
数据结构与算法解析习题2.13
数据结构与算法解析习题2.13:编写一个程序来确定正整数N是否是素数。 先判断是不是1,如果是1直接不是素数。 再判断能不能被2整除,最后判断能不能被小于n的开方整除,也就是说,判断n能否被2~n的开方整除。 如果都不能,就是素数。
int isPrime(unsigned int n) {
算法
未读
数据结构与算法解析习题2.12
数据结构与算法解析习题2.12:最小子序列和,最小正序列和,最大子序列乘积 书上的最大子序列和还有最小子序列和,最小正序列和,最大子序列乘积,这四个基本上是最常问的题了。 这几个绕来绕去容易把人搞蒙,算法有相似但地方但是细微的差别导致结果不同,再此记录一下。
#include <stdio.h>
算法
未读
数据结构与算法解析习题2.11:二分查找
数据结构与算法解析习题2.11:二分查找 在计算机科学中,二分搜索(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,
算法
未读
数据结构与算法解析习题2.10:霍纳法则(Horner's rule)
数据结构与算法解析习题2.10:霍纳法则(Horner's rule) 霍纳法则:求多项式值的一个快速算法,后发现算法程序和数字处理都远不及五百多年前的秦九韶有条理,遂现称秦九韶算法。 秦九韶算法是中国南宋时期的数学家秦九韶表述求解一元高次多项式的值的算法——正负开方术。它也可以配合牛顿法用来求解一
算法
未读
数据结构与算法解析习题2.7
数据结构与算法解析习题2.7:前N个自然数的一个随机置换 问题描述:假设需要生成前N个自然数的一个随机置换。例如,{4,3,1,5,2} 和 {3,1,4,2,5} 就是合法的置换,但 {5,4,1,2,1} 却不是,因为数1出现了两次而数 3 缺没有。这个程序常常用于模拟一些算法。我们假设存在一个