黑马程序员技术交流社区
标题: 第五天 总结 (中) [打印本页]
作者: 陈郊 时间: 2012-10-2 08:31
标题: 第五天 总结 (中)
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,因为下标是从0到length-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 求余 将其倒序排列
这种操作效率低
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |