您的位置:首页 > 其它

二分查找以及冒泡排序

2016-10-20 08:40 246 查看

二分查找

描述:

我们在猜1-100的数字时,一般比较靠谱的猜测是先取一个中间值。比如50,如果被猜数小则开始猜1-49之间的数字,再猜数字是不是25,依次往复。二分查找法道理也大体相同。

//查找这个数字是否在数组里,在则返回下标位置,不在则返回-1
public int binaryFind(int[] arr,int searchKey){
int ins=0;    //用来存储数组的中间值
int low=0;    //一个数组的开始下标
int pow=arr.length-1;    数组的结束下标
while(true){
ins=(low+pow)/2;
if(arr[ins] == searchKey){
return ins;
}else if(low > pow){
return -1;
}else{
//被查找数小于中间数
if(arr[ins] > searchKey){
pow=ins-1;
}else{
low=ins+1;
}
}
}
}


如果开始下标大于结束下标那肯定是不成立的,所以返回一个-1作为错误结果,如果成立,那么假如‘被猜测的数’小于中间数,那么数组范围缩小到开始下标和中间数之间,最后,结束下标得向中间数方向移动,用来缩小查找的范围。



冒泡排序

最基础的排序算法

public static void main(String[] args) {
int[] arr=new int[]{1,2,15,222,45,60};
int temp=0;
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int num:arr){
System.out.println(num);    //1,2,15,45,60,222
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息