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];
누구든지이 알고리즘에 문제가 있다고 생각되면 알려 주시기 바랍니다. 나는 몇 시간 동안 디버깅을 해왔다. 감사.
잘못된 솔루션을 생성하는 데이터 세트를 게시 할 수 있습니까? –