本帖最后由 Michael_xpd 于 2013-11-27 14:10 编辑
- package Demo;
- /**
- * 需求:实现折半查找的另一种方法
- * 思路:用while循环控制循环折半查找
- * 注:当我用小于数组中最大值的整数变量测试时,能返回正确的变量。
- * 当我用大于数组中最大值的整数变量时,不能返回正确的-1
- *
- *
- * */
- public class Day0203 {
- public static void main(String[] args) {
- // TODO 自动生成的方法存根
- int arr[]={12,33,4,54,8,13,9};
- sort(arr);
- System.out.println("排序后");
- printArray(arr);
- int index=0;
- index=halfSort(arr,55);
- System.out.println(index);
- }
- //定义一个折半查找的功能halfSort()
- public static int halfSort(int arr[],int key){
- int min=0,max=arr.length,mid;
- /**int min=0;
- int max=arr.length;
- int mid;*/
- while(min<=max){
- mid=(min+max)/2;
-
- if(arr[mid]<key)
- min=mid+1;
- else if(arr[mid]>key)
- max=mid-1;
- else return mid;
- }
- return -1;
- }
- public static void sort(int arr[]){
- for(int i=0;i<arr.length;i++){
- for(int j=i+1;j<arr.length;j++){
- if(arr[i]>arr[j]){
- arr[i]=arr[i]^arr[j];
- arr[j]=arr[i]^arr[j];
- arr[i]=arr[i]^arr[j];
- }
- }
- }
- }
- public static void printArray(int arr[]){
- for(int i=0;i<arr.length;i++){
- System.out.print(arr[i]+",");
- }
- System.out.println();
- }
- }
复制代码 |