- public class TwoDepart
- {
- public static int quickSortOneTime(int[] a, int i, int j)//一趟快速排序
- {
- int high,low,key;
- high = j;
- low = i;
- key = a[low];
- while(low < high)
- {
- while(key <= a[high] && low < high)
- {
- high--;
- }
- if( low < high)
- {
- a[low] = a[high];
- low++;
- }
- while(key >= a[low] && low < high)
- {
- low++;
- }
- if( low < high)
- {
- a[high] = a[low];
- high--;
- }
- }
- a[high] = key;
- return high;
- }
- public static void twoDepart(int[] a,int i,int j, int values)
- {
- int mid = quickSortOneTime(a,i,j);
- System.out.println("mid = " + mid + " i = "+i+" j = " + j);
- System.out.println(i < j);
- if(i < j)
- {
- if(a[mid] == values)
- { System.out.println("ok, keyword is at " +mid );
- }
- else if(a[mid] < values )
- {
- i = mid +1;
- twoDepart(a,i,j,values);
- }
- else if(a[mid] > values)
- {
- j = mid -1;
- twoDepart(a,i,j,values);
- }
- }
- else if(i==j && a[mid] != values )
- {
- System.out.println("It doesn't exists");
- }
- else System.out.println("Finalily we find the keyword is at " + mid );
- }
- public static void main(String[] args)
- {
- int[] a = new int[] {1,4,9,3,24,21,6,9,9,7,6,5,3};
- int values = 4;
- twoDepart(a,0,a.length-1,values);
- }
- }
Java实现的对无序数组进行的二分查找法
最新推荐文章于 2024-05-10 15:07:54 发布