- class SzDemo5
- {
- public static void main(String[] args)
- {
- int[] arr = {4,2,1,8,4,6};
- Show(arr);
- PX(arr);
- Show(arr);
- System.out.println("arr["+Find(arr,8)+"]");
- }
- public static void PX(int[] arr)
- {
- for(int i=0; i<arr.length; i++)
- {
- for(int j=0; j<arr.length-1; j++)
- {
- if(arr[j]>arr[j+1])
- {
- Swap(arr,j,j+1);
- }
- }
- }
- }
- public static int Find(int[] arr, int key)
- {
- int max = arr.length-1;
- int min = 0;
- int mid = (min+max)/2;
- if(key!=arr[mid])
- {
- 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 Swap(int[] arr,int i,int j)
- {
- int temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- }
- public static void Show(int[] arr)
- {
- for(int i=0; i<arr.length; i++)
- {
- System.out.print(arr[i]+",");
- }
- System.out.println();
- }
- }
复制代码 这个里面Find函数时折半查找,但是我key=8输入进去,按逻辑来说应该是arr[5]来显示,但是最后显示的确实arr[4],请问这是为什么?谢了
|
|