public class PaiXu {
public static void main(String[] args) {
/*int[] arr = {3,1,5,4,2,9};
int index = getIndex(arr,20);
System.out.println("index="+index);*/
int[] arr = {2,4,5,7,8,9,13,64};
int index = halfSerach_2(arr, 5);
System.out.println("index="+index);
}
//折半的第二种方式
public static int halfSerach_2(int[] arr,int key){
int min = 0,max = arr.length-1,mid;
while(min<=max){
mid = (max+min)>>1;
if (key>arr[mid]) {
min = mid+ 1;
}else if(key<arr[mid]){
max = mid -1;
}else{
return mid;
}
}
return -1;
}
//折半查找,但是必须要保证该数组是有序的数组。
public static int halfSearch(int[] arr,int key){
int min,max,mid;
min = 0;
max = arr.length;
mid = (min+max)/2;
while (arr[mid]!=key) {
if (key>arr[mid]) {
min = mid+ 1;
}else if(key<arr[mid]){
max = mid -1;
}if(min>max){
return -1;
}
mid = (min+max)/2;
}
return mid;
}
//定义功能,获取key第一次出现在数组中的位置。如果是-1,那么代表该key在数组中不存在。
/*public static int getIndex(int[] arr,int key){
for (int i = 0; i < arr.length; i++) {
if (arr[i]==key) {
return i;
}
}
return -1;
}*/
}
public static void main(String[] args) {
/*int[] arr = {3,1,5,4,2,9};
int index = getIndex(arr,20);
System.out.println("index="+index);*/
int[] arr = {2,4,5,7,8,9,13,64};
int index = halfSerach_2(arr, 5);
System.out.println("index="+index);
}
//折半的第二种方式
public static int halfSerach_2(int[] arr,int key){
int min = 0,max = arr.length-1,mid;
while(min<=max){
mid = (max+min)>>1;
if (key>arr[mid]) {
min = mid+ 1;
}else if(key<arr[mid]){
max = mid -1;
}else{
return mid;
}
}
return -1;
}
//折半查找,但是必须要保证该数组是有序的数组。
public static int halfSearch(int[] arr,int key){
int min,max,mid;
min = 0;
max = arr.length;
mid = (min+max)/2;
while (arr[mid]!=key) {
if (key>arr[mid]) {
min = mid+ 1;
}else if(key<arr[mid]){
max = mid -1;
}if(min>max){
return -1;
}
mid = (min+max)/2;
}
return mid;
}
//定义功能,获取key第一次出现在数组中的位置。如果是-1,那么代表该key在数组中不存在。
/*public static int getIndex(int[] arr,int key){
for (int i = 0; i < arr.length; i++) {
if (arr[i]==key) {
return i;
}
}
return -1;
}*/
}