1. 定义一个方法利用顺序查找,查询某个元素是否存在
2. 定义一个方法利用顺序查找,查询某个元素的索引
3. 二分查找
方法类
public class SearchTools {
//用顺序查找,查询元素在数组中是否存在
public static boolean SequentialSearch1(int arr[],int num){
for (int i = 0; i < arr.length; i++) {
if(num == arr[i]){
return true;
}
}
return false;
}
//用顺序查找,查询元素在数组中的索引
public static int SequentialSearch2(int arr[],int num){
boolean b = SequentialSearch1(arr,num);
if(b == true){
for (int i = 0; i < arr.length; i++) {
if(arr[i] == num){
return i;
}
}
}
return -1;
}
//二分查找
public static int BinarySearch(int arr[],int num){
//先判断是否存在
Boolean result = SearchTools.SequentialSearch1(arr, num);
if(result == false){
return -1;
}
//再冒泡排序
SearchTools.SelectionSort(arr);
int max = arr.length - 1;
int min = 0;
while (true){
int mid = (max + min)/2;
if(arr[mid] > num){
max = mid - 1;
}
else if(arr[mid] < num){
min = mid + 1;
}
else {
return mid;
}
}
}
//选择排序
public static int[] SelectionSort(int arr[]){
for (int i = 0; i < arr.length; i++) {
for(int j = i + 1;j < arr.length;j++){
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
//冒泡排序
public static int[] BubbleSortt(int arr[]){
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];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
}
Test类
public class Test {
public static void main(String[] args) {
int arr[] = {131,127,147,81,103,23,7,79};
boolean result = SearchTools.SequentialSearch1(arr,9);
System.out.println(result);
int index1 = SearchTools.SequentialSearch2(arr,9);
System.out.println(index1);
SearchTools.BubbleSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
int index2 = SearchTools.BinarySearch(arr, 81);
System.out.println(index2);
}
}