数组第二种定义
数组-遍历
数组操作的核心思想就是对角标的操作;
数组-求最值
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 }
Integer.toBinaryString()