查找算法
import java.util.Arrays;
import java.util.Scanner;
public class binarySearch {
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int[] ints = new int[10];
{
ints[0] = 44;
ints[1] = 9;
ints[2] = 99;
ints[3] = 13;
ints[4] = 14;
ints[5] = 25;
ints[6] = 0;
ints[7] = 49;
ints[8] = 7;
ints[9] = 11;
}
Arrays.sort(ints);
for (int x:ints)
System.out.print(x + " ");
System.out.print("\n请输入查找信息:");
new binarySearch().binaryS(ints,sc.nextInt());
}
private void binaryS(int[] ints,int data) {
int high = 9;
int low = 0;
int middle;
while(low <= high){
middle = (high + low) / 2;
if(ints[middle] == data){
System.out.println("[ index = " + middle + " ]");
return;
}else if(ints[middle] > data){
high = middle - 1;
}else{
low = middle + 1;
}
}
System.out.println("序列中无此数据");
}
}
import java.util.Scanner;
public class splitSearch {
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int[] ints = new int[18];
int[] suoYin = new int[5];
System.out.println("录入数据:");
for(int i = 0;i < 18;i++)
ints[i] = sc.nextInt();
for(int i = 0;i < ints.length / 6;i++){
int max = i;
for(int j = i * 6;j < (i + 1) * 6;j++)
if(ints[j] > ints[max])
max = j;
suoYin[i] = max;
}
System.out.print("请输入查找信息:");
new splitSearch().splitS(ints,suoYin,sc.nextInt());
}
private void splitS(int[] ints,int[] xx,int data){
int low = 0;
int high = ints.length / 6 - 1;
int sure = -1;
int middle;
while(low <= high){
middle = (low + high) / 2;
if(data > ints[xx[middle]] && high - middle == 1){
sure = high;
break;
}else if(data < ints[xx[middle]] && middle - low == 1 && data > ints[xx[low]]){
sure = middle;
break;
}else if(data < ints[xx[middle]] && data < ints[xx[low]]){
sure = low;
}
if(data > ints[xx[middle]]){
low = middle + 1;
}else if(data < ints[xx[middle]]){
high = middle - 1;
}else{
System.out.println("[ index = " + xx[middle] + " ]");
return;
}
}
for(int i = sure * 6;i < (sure + 1) * 6 && sure >= 0;i++)
if(ints[i] == data){
System.out.println("[ index = " + i + " ]");
return;
}
System.out.println("[ 无此数据 ]");
}
}