A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小强9090 中级黑马   /  2014-6-6 13:52  /  1346 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class  t6
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr={1,2,0,6,98,0};
  6.                 //toBin(60);toHex(60);toHex_2(60);
  7.                 toHex_3(60);
  8.                 toHex_4(60);
  9.                 //printArr(arr);
  10.                 System.out.println("Hello World!");
  11.         }
  12.         //打印数组
  13.         public static void printArr(int[] arr)
  14.         {
  15.                 System.out.print("[");
  16.                 for (int i=0; i<arr.length ;i++ )
  17.                 {
  18.                         if (i!=arr.length-1)
  19.                                 System.out.print(arr[i]+",");
  20.                         else
  21.                                 System.out.println(arr[i]+"]");
  22.                
  23.                 }
  24.         }
  25.         //冒泡排序
  26.         public static void bubble(int[] arr)
  27.         {
  28.                 for (int i=0;i<arr.length-1;i++)
  29.                 {
  30.                         for (int j=i+1; j<arr.length ;j++ )
  31.                         {
  32.                                 if (arr[i]<arr[j])
  33.                                 {
  34.                                         //int temp=arr[i];
  35.                                         //arr[i]=arr[j];
  36.                                         //arr[j]=temp;
  37.                                         swap(arr,i,j);
  38.                                 }       
  39.                         }
  40.                 }
  41.         }
  42.         //俩数换值
  43.         public static void swap(int[]arr,int a,int b)
  44.         {
  45.                 int temp=arr[a];
  46.                 arr[a]=arr[b];
  47.                 arr[b]=temp;

  48.         }
  49.         //数组的查找
  50.         public static int GetIndex(int[] arr,int key)
  51.         {
  52.                 for (int i=0;i<arr.length ;i++ )
  53.                 {
  54.                         if (arr[i]==key)
  55.                                 return i;
  56.                 }
  57.                 return -1;//不在该数组内
  58.         }
  59.         //折半查找(可以提高效率):数组必须为有序数组,找到的为元素在数组中的角标。
  60.         public static int halfSearch(int[] arr,int key)
  61.         {
  62.                 int min=0,max=arr.length-1,mid=(min+max)/2;
  63.                 while (arr[mid]!=key)
  64.                 {
  65.                         if (key>arr[mid])
  66.                                 min=mid+1;
  67.                         else
  68.                                 max=mid-1;
  69.                         if(max<min)
  70.                                 return -1;
  71.                         mid=(min+max)>>1;
  72.                 }
  73.                 return mid;
  74.         }
  75.         //折半查找的第二种方式,数组必须为有序的。
  76.         public static int halfSearch_2(int[] arr,int key)
  77.         {
  78.                 int min=0,max=arr.length-1,mid;
  79.                 while (min<=max)
  80.                 {
  81.                         mid=(min+max)/2;
  82.                         if (key>arr[mid])
  83.                                 min=mid+1;
  84.                         else if(key<arr[mid])
  85.                                 max=mid-1;
  86.                         else
  87.                                 return mid;
  88.                        
  89.                 }
  90.                 return -1;//返回-1是表示该数没有找到,返回mid表示该数若存在则应该所在的位置。
  91.         }
  92.         //在有序数组中插入一个数,先查找该数组中是否存在该数,若存在,则在其原位插入,
  93.         //将原来的数据一次往后顺延;若不存在,则返回该数可以插入的位置,然后以此往后顺延。
  94.         //进制的转换操作
  95.         //十进制转二进制
  96.         public static void toBin(int num)
  97.         {
  98.                 StringBuffer sb = new StringBuffer();//是一个容器
  99.                 while (num!=0)
  100.                 {
  101.                         sb.append(num%2);
  102.                         num/=2;
  103.                 }
  104.                 System.out.println(sb.reverse());//可以反转输出
  105.         }
  106.         //十进制转十六进制
  107.         public static void toHex(int num)
  108.         {
  109.                 for (int x=0;x<8 ;x++ )
  110.                 {
  111.                         int temp=num&15;
  112.                         if(temp>9)
  113.                                 System.out.println((char)(temp-10+'A'));
  114.                         else
  115.                                 System.out.println(temp);
  116.                         num=num>>>4;
  117.                 }
  118.         }
  119.         public static void toHex_2(int num)
  120.         {
  121.                 StringBuffer sb = new StringBuffer();
  122.                 for (int x=0;x<8 ;x++ )
  123.                 {
  124.                         int temp=num&15;
  125.                         if(temp>9)
  126.                                 sb.append((char)(temp-10+'A'));
  127.                         else
  128.                                 sb.append(temp);
  129.                         num=num>>>4;
  130.                 }
  131.                 System.out.println(sb.reverse());

  132.         }
  133.         //查表法来获取内容
  134.         //将所有的元素临时存储起来,建立对应关系。
  135.         //每一次&15后的值作为索引去查建立好的表,就可以找到对应的元素,这样比“-10+‘A’简单的多”。
  136.         public static void toHex_3(int num)
  137.         {
  138.                 //建立表
  139.                 char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  140.                 for (int x=0;x<8 ;x++ )
  141.                 {
  142.                         int temp=num&15;
  143.                         System.out.print(chs[temp]);
  144.                         num=num>>>4;
  145.                 }
  146.         }
  147.         //上面结果是出来了,但是是反着的,要求正向输出。

  148.         public static void toHex_4(int num)
  149.         {
  150.                 char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  151.                 char[] arr=new char[8];
  152.                 int pos=arr.length-1;//倒着存贮
  153.                 while (num!=0)
  154.                 {
  155.                         int temp=num&15;
  156.                         arr[--pos]=chs[temp];
  157.                         num=num>>>4;
  158.                 }
  159.                 System.out.println(pos);
  160.                 for (int x=pos;x<arr.length ;x++ )
  161.                 {
  162.                         System.out.print(arr[x]+",");
  163.                 }
  164.         }


  165. }
复制代码

10 个回复

倒序浏览
就这么几个简单的程序,跟着老师敲,还老是编译不通过,不停的找错,改错,太马虎,太粗心
回复 使用道具 举报
有没有高效一点的法子,我也受不了自己的速度,,与马虎了
回复 使用道具 举报
自学的c都被我忘掉了,昨天写个循环都忘记怎么输出了。看来语言真是不学就会忘掉那
回复 使用道具 举报
还是要常常多复习,多巩固,才能越来越好哈。
回复 使用道具 举报
就我一个人在评论,算是打酱油吗
回复 使用道具 举报
:loveliness:
回复 使用道具 举报
小强同学你好~
学习本来就应该是个慢功夫,不要心急
实力总是会在不经意间提高的!

另外不要这样水贴,小心涛哥抓你!:D
回复 使用道具 举报
你是来蹭经验的么,一,刚学的时候都这样,没基础的语法都记不熟,还有拼写错误能不报错么。
二,你学的时候算法一定要闹清。
少年慢慢来吧,多敲代码,熟能生巧
回复 使用道具 举报
这样的贴就算水贴啊?记住了哈哈!!!!:lol
回复 使用道具 举报
努力,哥们
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马