//二分查找
1、前提:数组已经有序
public static int binarySearch(int[] array,int key);
2、在有序数组中查找key,如果找到,返回所在下标
如果没找到返回-1
//冒泡排序
public static void swap(int array[],int i,int j){
int t=array[i];
array[i]=array[j];
array[j]=t;
}
public static void bubbleSort(int[] array)
二分查找:
int left,right 确定查找区间
知道left和right区间没有数了,才说明全部查找结束
1、根据left和right计算出中间位置的下标mid
2、array[mid]和key进行比较: 如果key==array[mid]找到了
如果key<array[mid] right变动
如果key>array[mid]left变动
可以继续循环的条件时left和right中间还有数,left<right
1、根据left和right计算中间位置的下标mid
int mid=(left+right)/2
int mid=left+(right-left)/2
2、比较array[mid]和key
1、array[mid]==key return mid
2、key<array[mid] right=mid-1
3、key>array[mid] left=mid+1
二分查找思路的应用:
猜数字游戏,随机生成一个1-100之间的数
求n的平方根,n>1
冒泡排序:
1、依次比较相邻的两个数,永远让最大的数在后边,走完整个未排序区间,一定能保证,最大的数会被推到最后去
2、冒泡一次,可以让一个最大的数放到最后,一共经过n次(n-1)次
减法算治 一次处理一个数 剩下的n-1个数可以按照同样的思路处理