class BinarySearch{
public static void main(String[] args){
int[] arr={1,5,7,9,10};
int index=binarySearch(arr,0,arr.length,10);
if(index!=-1){
System.out.println("找到值的索引为:"+index);
}else{
System.out.println("没有找到值!");
}
}
public static int binarySearch(int[] arr,int start,int end,int num){
if(start>end){
return -1;
}else{
int mid=(start+end)/2;
if(num<arr[mid]){
return binarySearch(arr,start,mid-1,10);
}else if(num>arr[mid]){
return binarySearch(arr,mid+1,end,10);
}else{
return mid;
}
}
}
}
二、快速 排序基本算法
1、基本思想:首先选一个基准点,将待排序记录划分为独立的两部分,左侧记录的关键码均小于等于轴值,右侧记录的关键码均大于等于轴值,之后再分别对这两个部分重复上述过程,直到整个序列有序为止。
2、代码如下:
class QuickSort{
public static void main(String[] args){
int[] arr={49,38,65,97,76,13,27,49};
quickSort(arr);
print(arr);
}
public static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static void quickSort(int[] arr){
sort(arr,0,arr.length-1);
}
public static void sort(int[] arr,int low,int high){
if(low>high){
return;
}
int i=low;
int j=high;
int index=arr[i]; //用第一个值作为基准值
while(i<j){
while(i<j&&arr[j]>=index)j--;//如果没有比关键值小的,比较下一个,
//直到有比关键值小的交换位置,然后又从前往后比较
if(arr[j]<index){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
while(i<j&&arr[i]<=index)i++;
if(arr[i]>index){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
sort(arr,low,i-1); //对低子表进行递归排序
sort(arr,i+1,high); // 对高子表进行递归排序
}
}