java>十进制转十六进制,折半查找

it2022-05-05  128

     * 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; }

 


最新回复(0)