* 10 进制转 16 进制,计算公式如下例 * 1958 转 16 进制 * 1958 % 16 == 6 1958 / 16 == 122 * 122 % 16 == 10 也就是 A 122 / 16 == 7 * 7 < 16 * 1958 的 16 进制 为 7A6
//反转字符串 public static String reverse(String s){ int length=s.length(); String t=""; for(int i=length-1;i>=0;i--) t=t+s.charAt(i); return t; } public static String decToHex(int n){ String m=""; while(n>0) { int yushu = n; int shang=n/16; if(yushu>9) m=m+(char)(yushu-10+'A');// char+int 还是int 所以这里需要强转 else m=m+yushu; //string+int=string 所以不需要强转 n=shang; } return reverse(m); } public static void main(String[] args){ System.out.println(decToHex(1958)); }折半查找
左闭右开 及 左闭右闭 这两种区间写法的区别:
假定数组为a={1,2,3,4,5}
//[0,5) public static int binarySearch1(int[] a,int v){ int left=0; int right=a.length; while(left<right)//[3,4)一个数 [3,3)相等则不需要再判断 { int mid=(left+right)/2; if(a[mid]==v) return mid; else if(a[mid]<v){ left=mid+1; } else{ right=mid; } } return -1; } //[0,4] public static int binarySearch2(int[] a,int v){ int left=0; int right=a.length-1; while(left<=right)//[3,4]两个数[3,3]一个数 相等还可以进入循环 { int mid=(left+right)/2; if(a[mid]==v) return mid; else if(a[mid]<v) { left=mid+1; } else{ right=mid-1; } } return -1; }