내가하고있는 것은 퀵 소트 알고리즘을 사용하여, 필자의 피벗 엘리먼트 (항상 배열의 첫 번째 엘리먼트가 정렬 된 배열의 적당한 위치에 위치하게된다. .? 구현 한 알고리즘은 Quickselect라고임의의 배열에서 주어진 랭크의 원소를 찾는 것
public static int arbitrary(int a[],int x,int y,int rank)//x and y are first and last indecies of the array
{
int j=y,temp;
if(x<y)
{
for(int i=y;i>x;i--)
{
if(a[i]>a[x])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
j--;
}
}
temp=a[x];
a[x]=a[j];
a[j]=temp;
//System.out.println("j is "+j);
if(j==rank)
return a[j];
else if(rank<j)
return arbitrary(a,x,j-1,rank);
else
return arbitrary(a,j+1,y,rank);
}
else
return 0;
}
순위의 요소는 무엇을 의미합니까? –
"순위"를 사용하여 "정렬 한 경우 배열의 요소 위치"를 의미하는 경우 [minheap] (http://en.wikipedia.org/wiki/Heap_%28data_structure%29)을 만들고이를 사용하여 N 번째로 큰 요소. – Kevin
@Kevin 그렇습니다. 제가 계급이라고 부르는 것입니다. 답을 자세히 설명해 주시겠습니까? Minheap을 작성한 후에 알 수있는 것이 가장 큰 n/2 요소가 잎에 있고, 다른 건 ... 그리고 답장을 보내 주셔서 감사합니다. – Prerak