一、二分查找
**前提:数组已经有序**
代码:
``
public class test{
public static int binarySearch(int[] array,int key){
int left=0,right=array.length;
while(left<right){
int mid=left+(right-left)/2;
if(array[mid]==key){
return(mid);
}
else if(array[mid]>key){
right=mid;
}
else {
left=mid+1;
}
}
return -1;
}
public static void main(String[] args){
int[] array={1,2,3,4,5,6,7,8,9};
int num = binarySearch(array,7);
System.out.println("下标为"+ num);
}
}
**二分查找思路的应用:**
1.猜数字游戏,随机生成一个1~100之间的数
2.求n的平方根
## 二、冒泡排序:
1.依次比较相邻的两个数,永远让最大的数在后面。走完整个未排序区间,一定保证最大的数被放到最后面。
冒泡一次,可以让一个最大的数放到最后面去。一共要n-1次。
减治算法
代码:
import java.util.Arrays;
public class test{
public static void bubbleSort(int[] array){
int Mid=0;
for(int i=0;i<array.length;i++){
for(int j=0;j<array.length-i-1;j++){
if(array[j]>array[j+1]){
int t =array[j];
array[j]=array[j+1];
array[j+1]= t ;
}
}
}
}
public static void main(String[] args){
int[] array={9,8,7,6,5,4,3,2,1};
bubbleSort(array);
System.out.println(Arrays.toString(array));
}
}
二分查找有些小问题 希望大佬指出来