빠른 정렬을 이해하는 데 어려움을 겪고 있습니다. 여기 내 이해빠른 분류를 이해해야합니다.
- 우리는 피벗보다
- 모든 요소가 피벗보다는 모든 요소 이상이 바로
- 사용 재귀로 이동 피벗
- 의 왼쪽에 갈 피벗을 선택 지금까지입니다 이 프로세스를 계속하십시오.
내 문제는 재귀 인 마지막 단계를 계속하는 방법을 이해할 수 없다는 것입니다. 나는 지금까지 다음과 같은 것을 가지고있다. 나는 아주 기본적인 것을 원한다. 배열은
void quickSort(int *ptr,int lowindex , int highindex)
{
int left = lowindex ;
int right = highindex;
int pivot = ptr[rand()%highindex];
while(left < right)
{
while(ptr[left] < pivot)
{
left++;
}
while(ptr[right] > pivot)
{
right--;
}
//Now swap the two
int temp = ptr[left];
ptr[left] = ptr[right];
ptr[right] = temp;
}
std::cout << "Current Array is : ";
for(int i=0;i<7;i++)
{
std::cout << ptr[i] << "," ;
}
std::cout << "\n";
//How to add recursion ?
}
또한 붙어 얻을 while(left < right)
루프에 대한 가능성이 중복
'ptr [left]'와'ptr [right]'가 모두 피벗과 동일한 값을 가리킬 때 어떤 점이 좋습니까? –
흠. 나는 그것을 고려하지 않았다. – Rajeshwar