배열에서 퀵 정렬을 사용하려고하는데, 내가 잘못하고있는 것이 확실하지 않습니다. 순서에 내 번호는C 배열 파티션
-2 0 1 4 7 9 11 12 15
내가 얻고 그러나해야한다 :
0 1 4 7 15 12 11 9 -2
0 : 여기에int partition(int* a, int left, int right) { int pivot, leftPoint, rightPoint, temp; pivot = a[left]; leftPoint = left; rightPoint = right + 1; while(rightPoint > leftPoint) { while(a[leftPoint] <= pivot && leftPoint <= right) leftPoint ++; while(a[rightPoint] > pivot) rightPoint --; temp = a[leftPoint]; a[leftPoint] = a[rightPoint]; a[rightPoint] = temp; } temp = a[left]; a[left] = a[rightPoint]; a[rightPoint] = temp; return rightPoint; }
내 파티션 코드
누군가 내 알고리즘에 문제가 있음을 설명 할 수 있습니까?
EDIT : 이 내 초기 배열이다
7-12 1-2 0 15 4 11 9
제가
quicksort(a, 0, 8);
이것은 구현은 퀵로 전화 내 퀵 소트 :
void quickSort(int a[], int low, int high)
{
int pivotPoint;
if(low < high)
{
// divide and conquer
pivotPoint = partition(a, low, high);
quickSort(a, low, pivotPoint);
quickSort(a, pivotPoint + 1, high);
}
}
추가 정보
샘플에 분할 코드를 호출하는 방법을 보여주십시오 데이터 세트 - 특히 '왼쪽'과 '오른쪽'의 값은 무엇입니까? 나는'rightPoint = right + 1'에 대해 의심 스럽지만 ... 의존합니다. 또한 스타일 상으로 증가 또는 감소 연산자와 피연산자를 분리하지 마십시오. –