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 求余 将其倒序排列 这种操作效率低 |