求最大公约数,二分查找法
来源:互联网 发布:js中单引号双引号 编辑:程序博客网 时间:2024/06/14 15:13
最近买了两本有关数据结构和算法的书来研,打算好好重新学习一下,毕竟技术随着时间的推移是可能被慢慢淘汰的,而算法是那些技术实现的根基。
算法是是计算机解决问题的方法,高效的算法能让计算机更快的解决问题。
欧几里得算法求最大公约数:
计算两个非负整数p、q的最大公约数:如果q=0,则最大公约数是p,否则,将p除以q,得到余数r,p、q的最大公约数等于p与r的最大公约数。
因此,我们通过计算机代码来实现:
/**欧几里得算法,求最大公约数 * 求两个非负整数的最大公约数 * @param num1 * @param num2 * @return */public static int gcd(int num1,int num2){if(num2 == 0){return num1;}int r = num1 % num2; return gcd(num1, r);}
二分查找法:
当我们要在一个有序的序列中找到一个数,我们可以通过二分查找法,这样可以有效减少查询次数。
,如果我们只是通过一个个遍历来查找,这样效率就会下降很多。
图解:
/** * 二分法求下标 ,要求数组是有序的 * @param key * @param numbers * @return */public static int getIndex(int key,int[] numbers){int startIndex = 0;int endIndex = numbers.length - 1;while(startIndex <= endIndex){int midIndex = (startIndex + endIndex)/2;if(key > numbers[midIndex]){startIndex = midIndex + 1;}else if(key < numbers[midIndex]){endIndex = midIndex - 1;}else{return midIndex;}}return -1;}/** * 低效率的实现 * @param key * @param numbers * @return */public int getIndexLow(int key,int[] numbers){for(int i = 0;i < numbers.length;i++){if(key == numbers[i]){return i;}}return -1;}
0 0
- 求最大公约数,二分查找法
- 02 二分查找和最大公约数
- 二分查找求下界
- 二分查找求平方根
- 二分查找、三分查找求极点、二分求等比数列【模板】
- 二分查找求上界 下界
- 二分查找求上、下界
- 二分查找求上、下界
- 二分查找之求中值
- 二分查找求上下界
- 欧几里得法求最大公约数
- 递归法求最大公约数
- 【java】二分查找 求下界 求上界
- 查找----二分查找法
- 欧几里得法递归求最大公约数
- 求最大公约数(递归法)
- 用递归法求最大公约数
- 求最大公约数(递归法)
- 五.配置变量和调试生产模式
- Ubuntu下配置AndroidStudio环境变量
- 【模板】尺取法
- Linux命令分隔符
- 制作CentOS 7一键自安装ISO镜像光盘
- 求最大公约数,二分查找法
- 六.控制器调用VIEW视图
- 关于TCP同步通信的理解
- 在eclipse中使用github进行代码的下载操作
- AppCan流失布局与弹性盒子的区别(3)
- 七.视图模版与项目进行整合
- JavaScript小基础
- 安卓Andriod使用入门(十一)【下拉刷新】
- 八.空操作和空控制器使用