java 折半查找

来源:互联网 发布:动物 爱情 知乎 编辑:程序博客网 时间:2024/06/05 02:37

折半查找
给定一组数据,先进行快速排序,再进行折半查找

import java.util.*;/** * @version 1.0 * @author zhouxiaowu * */public class BinSearch {    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        System.out.println("please input dataset:");        String str = sc.nextLine();        String[] s = str.split("\\s+");        System.out.println("please input search value:");        int value = sc.nextInt();        int[] nums = new int[s.length];        for(int i=0;i<nums.length;i++){            nums[i]=Integer.parseInt(s[i]);        }        Qsort(nums,0,nums.length-1);        System.out.println("sorted dataset:");        for(int i:nums)            System.out.print(i+" ");        System.out.print("\n");        int result = binSearch(nums,value);        System.out.println(value+":"+result);    }    public static void Qsort(int[] num,int low,int high){        if(low<high){            int part = partition(num,low,high);            if(low<part-1) Qsort(num,low,part-1);            if(high>part+1) Qsort(num,part+1,high);        }    }    public static int partition(int[] num,int p,int q){        int low =p,high=q;        int temp =num[low];        while(low<high){            while(low<high&&temp<=num[high])                high--;            if(low<high)                num[low++]=num[high];            while(low<high&&temp>=num[low])                low++;            if(low<high)                num[high--]=num[low];        }        num[low]=temp;        return low;    }    public static int binSearch(int[] num,int value){        int low = 0;        int high = num.length-1;        int mid;        while(low<=high){            mid=(low+high)/2;            if(num[mid]==value)                 return mid;            else if(num[mid]>value)                high=mid-1;            else                 low = mid+1;        }        return -1;    }}

测试结果:
Input:please input dataset:
15 7 9 2 12 8 1
please input search value:
9
output:sorted dataset:
1 2 7 8 9 12 15
9:4

0 0
原创粉丝点击