使用二分法从一组数中找出目标数字

本文介绍了一个简单的Java程序,该程序实现了数组的冒泡排序及快速排序,并使用二分法进行目标数值的查找。通过具体代码示例展示了排序算法的实现过程及搜索算法的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.lang.reflect.Array;
import java.util.Arrays;
public class Test8 {
int[] arr = { 5, 8, 9, 1, 3, 4, 7, 6 };


// 冒泡排序。
public void sort() {
for(int i=0;i<arr.length-1;i++){
for (int j = 0; j < arr.length-1-i; j++) {
if(arr[j]>arr[j+1]){
int temp = arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
for(int i:arr){
System.out.print(i+" ");
}
}
// 快速排序。
public void sort2(){

for(int i=0;i<arr.length-1;i++){
for(int j=1+i;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
for(int i : arr){
System.out.print(i+" ");
}

}
//二分法求目标数。
public int seek(int targetNum){
int low=0;    //定义一个最小索引数
int high=arr.length-1;  //定义一个最大索引数, length-1(一个数组长度其索引-1)
while(low<=high){       //通过控制low和high直到找到targetNum为止。
int middle=(low+high)/2;   
if (targetNum==arr[middle]) {   
return middle;
}else if(targetNum>arr[middle]){
low=middle+1;                       //middle+1 因为middle已经比较过,不用继续比较。
}else if (targetNum<arr[middle]) {
high=middle-1;
}
}
return -1;
}


public static void main(String[] args) {
Test8 t = new Test8();
t.sort();
System.out.println( "目标数的索引为:"+t.seek(9));
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值