1
我正在寫一個算法,該算法劃分並征服一個未分類的整數數組以找到第k個最小元素。在測試我的程序時,我的一些輸出結果出錯了。下面是代碼:第K個最小元素算法
public class kthsmallest {
public static final int MaxSize = 500;
public static int find_kth_smallest(int[] A, int n, int k)
{
return quicksort(A, n, k, 0, n-1);
}
public static int quicksort(int[] A, int n, int k, int low, int high){
int i = low;
int j = high;
int position = low + (high-low)/2;
int pivot = A[position];
while (i <= j){
while(A[i] < pivot)
i++;
while(A[j] > pivot)
j--;
if (i <= j){
int temp = A[i];
A[i] =A[j];
A[j] = temp;
i++;
j--;
}
}
//
if (position + 1 > k){
return quicksort(A, n, k, low, position-1);
} else if (position + 1 < k){
return quicksort(A, n, k, position+1, high);
} else
return A[position];
如果任何人都可以看到什麼毛病此算法,請讓我知道。我一直在調試幾個小時。謝謝。
你能發佈一個產生錯誤解決方案的數據集嗎? – 2013-03-08 18:45:50