常见算法题分析---java实现(一)
2018-02-13 17:56
239 查看
第一次博客,有错误勿喷,谢谢!
一,如何不用比较运算符,比较两个数的大小
分析:在计算机中判断两个数不用比较运算符,一般两个数做减法 a-b,然后再去可以使用位运算符来进行判断这个数的正负,从而知道大小,有两个位运算,>>和>>>,>>代表的是带符号右移,什么意思?在计算机中正数的符号位是0,负数的符号位是1,如果一个数11000101>>7= 11111111,01101101>>7= 00000000,>>>是不带符号右移,右移几位在前面补0即可。这道题在做完减法之后,首先判断结果为不为0,为零即两个数相等,否则可以使用带符号右移31位(默认位int,在java中32位)如果是负数则全是1,b大于a,如果位正数则全为0,a大于b。补充:左移只有<<(补0即可),没有<<<,
public class A {
private static void getMax(int a, int b) {
int index=a-b;
if(index==0)
System.out.println("same");
else{
if(sign(a)==false && sign(index)==false)
System.out.println("b大");
else
System.out.println("a大");
}
}
private static boolean sign(int index) { //判断一个数的正负
int sc=index>>31;
if(sc==0)
return true; //正数
else
return false; //负数
}
}
一,如何不用比较运算符,比较两个数的大小
分析:在计算机中判断两个数不用比较运算符,一般两个数做减法 a-b,然后再去可以使用位运算符来进行判断这个数的正负,从而知道大小,有两个位运算,>>和>>>,>>代表的是带符号右移,什么意思?在计算机中正数的符号位是0,负数的符号位是1,如果一个数11000101>>7= 11111111,01101101>>7= 00000000,>>>是不带符号右移,右移几位在前面补0即可。这道题在做完减法之后,首先判断结果为不为0,为零即两个数相等,否则可以使用带符号右移31位(默认位int,在java中32位)如果是负数则全是1,b大于a,如果位正数则全为0,a大于b。补充:左移只有<<(补0即可),没有<<<,
public class A {
private static void getMax(int a, int b) {
int index=a-b;
if(index==0)
System.out.println("same");
else{
if(sign(a)==false && sign(index)==false)
System.out.println("b大");
else
System.out.println("a大");
}
}
private static boolean sign(int index) { //判断一个数的正负
int sc=index>>31;
if(sc==0)
return true; //正数
else
return false; //负数
}
}
相关文章推荐
- java实现算法设计与分析-最大间隙
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
- 基于rsync同步算法的文件同步系统JAVA实现(四)——分析并发送不匹配数据块
- 一步步学习数据结构和算法之快速排序效率分析及java实现
- 大学常见算法的java实现及思考-汉诺塔问题
- 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现 refer from http://www.ibm.com/developerworks/cn/java/j-lo-tree/index.html?ca=drs-
- 一步步学习数据结构和算法之希尔排序效率分析及java实现
- 常见排序算法的C语言实现以及算法复杂度分析(持续更新)
- 一步步学习数据结构和算法之快速排序效率分析及java实现
- KMP模式匹配算法原理分析、next数组优化及java实现
- 汉诺塔问题的算法分析与实现(Java)
- 常见算法学习及其Java实现--插入排序算法
- 一步步学习数据结构和算法之归并排序效率分析及java实现
- 一步步学习数据结构和算法之直接插入排序效率分析及java实现
- 常见算法学习及其Java实现--冒泡算法实现
- 线性同余算法以及java中随机数的实现分析
- 一步步学习数据结构和算法之堆排序效率分析及java实现
- JAVA常见的权限控制算法的实现
- 一步步学习数据结构和算法之折半插入排序效率分析及java实现
- 算法设计、分析与实现 从入门到精通 C、C++和Java 这本书的堆实现85页C++语言实现有问题