我写了一个 你看一下 运行没问题~!- class ArrHalf
- {
- public static void main(String[] args)
- {
- int [] arr={5,3,2,4,8,34,67,85};
-
- bianLi(arr); //遍历输出原数组
- bubbleSort(arr); //冒泡排序输出数组
- bianLi(arr); //遍历数组 验证数组是否已经排序好,验证结果是数组已经排序好!
- int a=halfSearch(arr,4); //折半查找
- System.out.print(a);
-
- }
- public static int halfSearch(int [] arr,int key)//折半查找
- {
- int min = 0;
- int max = arr.length-1;
- int 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;
- }
- public static void bianLi(int a[])//遍历数组并输出
- {
- for (int x=0;x<a.length ;x++ )
- {
- System.out.print(a[x]+",");
- }
- System.out.println();
- }
- public static void bubbleSort(int a[])//冒泡排序
- {
- int temp;
- for (int x=a.length-1; x>=1 ;x-- )
- {
- for(int y=0;y<x;y++)
- {
- if(a[y]>a[y+1]){//如果前一个角标的数比后一个角标的数大 ,那么交换两个数的位置
- temp = a[y];
- a[y] = a[y+1];
- a[y+1] = temp;
- }
- }
- }
- }
- }
复制代码 |