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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈郊 中级黑马   /  2012-10-2 08:31  /  1178 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

4.数组元素反转
原理:就是将数组首尾元素进行交换,首++,--,直到首>=.
代码实现
                     for(intstart=0,end=arr.length-1;start<end;start++,end--){
                                   inttmp=arr[start];
                            arr[start]=arr[end];
                            arr[end]=tmp;
                            }
5.常规数组元素查找
原理:遍历数组中的所有元素,与每个元素进行比较
代码实现
       /*查找指定的元素在数组中是否存在,如果存在,得到这个元素在数组中是第几个.
                   参数: 1 要查找的数组   2 查找的元素
                   返回值: 元素在数组中的下标  如果返回-1代表数组中不存在这个要查找的值.
                   这种操作是我们的常规写法
         */                                                                              
              public static intsearch(int[] arr,int n){
                     intindex=-1; //初始为-1,因为下标是从0length-1
                     for(inti=0;i<arr.length;i++){
                            if(arr==n){
                                   index=i;
                                   break;
                            }
                     }
                     return index;
              }
6.折半查找
              前提:如果当前数组中的元素是有顺序的,我们可以采用折半查找,这样可以提高效率。就是将数组先分成一半,因为数组有顺序的,可以通过中间位置元素与要查找位置元素比较,确定在左右哪部分进行查找。
              原理:每一次都进行折半,折半后一样用中间位置元素与要查找的元素进行比较,直到中间位置元素与要查找的元素相等,代表找到了。如果出现头位置大于了尾位置,说明数组中没有要查找的元素。
代码实现
              public static inthalfSearch(int[] arr,int source){
                     int index=-1;
                     int start=0;
                     int end=arr.length-1;
                     int middle=(start+end)/2;
            while(start<=end){
              if(arr[middle]==source){//代表查找到了元素,那么middle赋值给index
                                   index=middle;
                                   break;
                            }else  if(arr[middle]>source){
//arr[middle]>source,我们应该在左半部分查找
                  end=middle-1;
                            }else     if(arr[middle]<source){
//arr[middle]<source,我们应该在右半部分查找.   
                              start=middle+1;
                            }
              middle=(start+end)/2;//因为start,end变化了,所以middle要重新计算
                     }
                     return index;
              }
7.进制转换  
进制转换
              1.十进转换成二进制  不断除2 求余  将其倒序排列
              2.十进转换成八进制  不断除8 求余  将其倒序排列
              3.十进转换成十六进制  不断除16 求余  将其倒序排列
              这种操作效率低

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马