第6章
《二分查找法》---- 前提:数组已经有序了(升序排好的,降序low和high要交换)
基本原理:
首先将要查找的元素(key)与数组的中间元素比较
1、如果key小于中间元素,只需要在数组的前一半元素中继续查找
2、如果key和中间元素相等,匹配成功,查找结束
3、如果key大于中间元素,只需要在数组的后一半中继续查找key
自我理解:把排好序的数组从中间,最前,最后记好,把要查找的值与中间值比较,若小于,则把high = mid - 1; //把最大值提前到原中间值前一位,mid =(high + low)/ 2; //重新计算中间值;
若大于,则把low = mid + 1; //把最小值提前到原中间值后一位,mid =(high + low)/ 2; //重新计算中间值;
若等于,则跳出循环,表示找到该数;
例:
int[] array = new array[10]; //数组
int low = 0; //下界下标
int high = array.length - 1; //上界下标
while( high >= low){
//计算中小标
int mid = (high + low ) / 2;
if(searchNum < array[mid]){
high = mid - 1;
}else if(searchNum > array[mid]){
low = mid + 1;
}else{
System.out.println("找到了数字!下标为:" + mid);
break;
}
}
《冒泡排序》
1.N个数,则需要比较N - 1轮
2.每一轮,比较的 次数 比上一轮少1
《数组自带的排序》
Arrays.sort(数组名); //调用Arrays包的sort方法排序(升序)