数组第二种定义
数组-遍历 数组操作的核心思想就是对角标的操作; 数组-求最值 1、循环 比较排序
选择排序 把原始数组分割成了两个数组,至少有一个是有序的 冒泡排序 相邻元素比较位置置换代码提取
形参排序性能问题
选择排序,每一轮找到最小值后才换位查找
遍历去比较要查找的值,没有返回-1折半查找(二分查找)
前提条件:数组内元素唯一,且有序 循环 判断条件有:中间值判断;首尾判断 "/2" 相对与 ">>1"如果查找的元素不存在,直接返回插入点(-插入点-1)
1 public static int binarySearch(int[]arr,int key){ 2 int start = 0; 3 int end = arr.length-1; 4 int mid = (start+end)/2; 5 while(end>start){ 6 if(key==arr[mid]){ 7 return mid; 8 } 9 else if(key>arr[mid]){10 start = mid+1;11 }else{12 end=mid-1; 13 }14 mid = (start + end)/2;15 }16 return -1;17 }
进制转换
转换为16进制--与运算 &15、无符号右移 >>>4 (char)temp-10+'A'使用数组--查表法
1 public static String trans(int num,int base,int offset){ 2 char[] chs ={'0','1','2','3', 3 '4','5','6','7', 4 '8','9','A','B', 5 'C','D','E','F'}; 6 String ss=""; 7 while(true){ 8 int temp = num & base; 9 ss= chs[temp]+ss;10 num = num >>> offset;11 if(num==0)12 return ss;13 }14 }