- class t6
- {
- public static void main(String[] args)
- {
- int[] arr={1,2,0,6,98,0};
- //toBin(60);toHex(60);toHex_2(60);
- toHex_3(60);
- toHex_4(60);
- //printArr(arr);
- System.out.println("Hello World!");
- }
- //打印数组
- public static void printArr(int[] arr)
- {
- System.out.print("[");
- for (int i=0; i<arr.length ;i++ )
- {
- if (i!=arr.length-1)
- System.out.print(arr[i]+",");
- else
- System.out.println(arr[i]+"]");
-
- }
- }
- //冒泡排序
- public static void bubble(int[] arr)
- {
- for (int i=0;i<arr.length-1;i++)
- {
- for (int j=i+1; j<arr.length ;j++ )
- {
- if (arr[i]<arr[j])
- {
- //int temp=arr[i];
- //arr[i]=arr[j];
- //arr[j]=temp;
- swap(arr,i,j);
- }
- }
- }
- }
- //俩数换值
- public static void swap(int[]arr,int a,int b)
- {
- int temp=arr[a];
- arr[a]=arr[b];
- arr[b]=temp;
- }
- //数组的查找
- public static int GetIndex(int[] arr,int key)
- {
- for (int i=0;i<arr.length ;i++ )
- {
- if (arr[i]==key)
- return i;
- }
- return -1;//不在该数组内
- }
- //折半查找(可以提高效率):数组必须为有序数组,找到的为元素在数组中的角标。
- public static int halfSearch(int[] arr,int key)
- {
- int min=0,max=arr.length-1,mid=(min+max)/2;
- while (arr[mid]!=key)
- {
- if (key>arr[mid])
- min=mid+1;
- else
- max=mid-1;
- if(max<min)
- return -1;
- mid=(min+max)>>1;
- }
- return mid;
- }
- //折半查找的第二种方式,数组必须为有序的。
- public static int halfSearch_2(int[] arr,int key)
- {
- int min=0,max=arr.length-1,mid;
- while (min<=max)
- {
- mid=(min+max)/2;
- if (key>arr[mid])
- min=mid+1;
- else if(key<arr[mid])
- max=mid-1;
- else
- return mid;
-
- }
- return -1;//返回-1是表示该数没有找到,返回mid表示该数若存在则应该所在的位置。
- }
- //在有序数组中插入一个数,先查找该数组中是否存在该数,若存在,则在其原位插入,
- //将原来的数据一次往后顺延;若不存在,则返回该数可以插入的位置,然后以此往后顺延。
- //进制的转换操作
- //十进制转二进制
- public static void toBin(int num)
- {
- StringBuffer sb = new StringBuffer();//是一个容器
- while (num!=0)
- {
- sb.append(num%2);
- num/=2;
- }
- System.out.println(sb.reverse());//可以反转输出
- }
- //十进制转十六进制
- public static void toHex(int num)
- {
- for (int x=0;x<8 ;x++ )
- {
- int temp=num&15;
- if(temp>9)
- System.out.println((char)(temp-10+'A'));
- else
- System.out.println(temp);
- num=num>>>4;
- }
- }
- public static void toHex_2(int num)
- {
- StringBuffer sb = new StringBuffer();
- for (int x=0;x<8 ;x++ )
- {
- int temp=num&15;
- if(temp>9)
- sb.append((char)(temp-10+'A'));
- else
- sb.append(temp);
- num=num>>>4;
- }
- System.out.println(sb.reverse());
- }
- //查表法来获取内容
- //将所有的元素临时存储起来,建立对应关系。
- //每一次&15后的值作为索引去查建立好的表,就可以找到对应的元素,这样比“-10+‘A’简单的多”。
- public static void toHex_3(int num)
- {
- //建立表
- char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
- for (int x=0;x<8 ;x++ )
- {
- int temp=num&15;
- System.out.print(chs[temp]);
- num=num>>>4;
- }
- }
- //上面结果是出来了,但是是反着的,要求正向输出。
- public static void toHex_4(int num)
- {
- char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
- char[] arr=new char[8];
- int pos=arr.length-1;//倒着存贮
- while (num!=0)
- {
- int temp=num&15;
- arr[--pos]=chs[temp];
- num=num>>>4;
- }
- System.out.println(pos);
- for (int x=pos;x<arr.length ;x++ )
- {
- System.out.print(arr[x]+",");
- }
- }
- }
复制代码 |
|