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

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));
}

}

猜你喜欢

转载自blog.csdn.net/qq_42193800/article/details/81052932
今日推荐