現有一個接口DataOperation定義了排序方法sort(int[]) 和查找方法search(int[], int),已知類QuickSort的quickSort(int[])方法實現了快速排序算法,類BinarySearch 的binarySearch(int[], int)方法實現了二分查找算法。現使用適配器模式設計一個系統,在不修改源代碼的狀況下將類QuickSort和類BinarySearch的方法適配到DataOperation接口中。繪製類圖並編程實現。(要求實現快速排序和二分查找)算法
package AdapterMode;編程
public class QuickSort {ide
public void quickSort(int[]a,int first, int end){ui
if(first<end){spa
int pivot = partition(a,first,end);設計
quickSort(a,first,pivot-1);排序
quickSort(a,pivot+1,end);接口
}it
} io
public int partition(int[] a , int first , int end){
int i = first; int j = end;
while(i<j){
while(i<j&&a[i]<=a[j])j--;
if(i<j){
int temp;
temp = a[i];
a[i]=a[j];
a[j]= temp;
i++;
}
while(i<j&&a[i]<=a[j])i++;
if(i<j){
int temp;
temp = a[j];
a[j]=a[i];
a[i]= temp;
j--;
}
}
return i ;
}
}
package AdapterMode;
public class BinarySearch {
public int binarySearch(int srcArray[],int key){
int mid = srcArray.length / 2;
if (key == srcArray[mid])
{
return mid;
}
int start = 0;
int end = srcArray.length - 1;
while (start <= end)
{
mid = (end - start) / 2 + start;
if (key < srcArray[mid])
{
end = mid - 1;
}
else if (key > srcArray[mid])
{
start = mid + 1;
} else
{
return mid;
}
}
return -1;
}
}
package AdapterMode;
public interface DataOperation {
public void sort(int r[]);
public int search(int r[],int n);
}