今天给大家分享一下怎么把一组无序的数组怎么能实现冒泡排序和二分法查找并返回下标

给定一组无序的数组来实现二分法查找

假如这一组数组是:12,55,69,13,9,56,11,36,7

以下就是该代码

public static void main(String[] args) {
 int [] arr={12,13,54,68,89,77,88,9};

首先利用冒泡排序将无序变为有序

for(int i=0;i<arr.length;i++){  控制轮数
for(int j=0;j<arr.length-i-1;i++){ 控制次数
if(arr[j]>arr[j+1]){ 这是从小到大排序 如果第一个大于第二个,那么就将第一个和第二个换位置
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t
}
}
}
for(int i=0;i<arr.length-1;i++){   遍历
System.out.print(arr[i]);  输出
}

输出的结果
现在这组数组为有序的,那么怎么用二分法实现查找某一个,并输出下标呢,以下代码就是

int a=11    2要查找的是11
int start=0   数组的开始位置
int end=arr.length-1    数组的结果位置
while(end>start){ 只有结尾大于开始,就说明他们之间是有数据的
int c=(start+end)/2 
if(arr[c]>a){  如果你查找的a小于他的这个界限c,说明你找的在前半段,所以就是end结尾,也就明白为什么要-1
end=c-1
}else if(arr[c]<a){ 如果你查找的a大小于他的这个界限c,说明你找的在后半段,所以就是start开始,也就明白为什么要+1
start=c+1     
}else{    否则就是中间,正好是你要的值
System.err.println("恭喜你找到了,当前下标为"+c);  
break;
}
}
System.out.println("没有找到");  这是最有的一种,假如,你要找的数组里面没有,就会在输出这句话。

结果
小女子不才,如有不妥之处,还请各位多多指教。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值