-3
當我運行我的QuickSort代碼,並輸入數字。 根本沒有輸出。 我不知道這個問題。[QuickSort]遞歸問題
這裏是我的代碼:
#include <stdio.h>
#include <stdlib.h>
void quickSort(int *pA, int left, int right) {
int i, j, t, temp;
temp = pA[left];
i = left;
j = right;
while (i != j) {
while (i < j && pA[j] >= temp)
j--;
while (i < j && pA[i] <= temp)
i++;
if (i < j) {
t = pA[i];
pA[i] = pA[j];
pA[j] = t;
}
}
pA[left] = pA[i];
pA[i] = temp;
quickSort(pA, left, i - 1);
quickSort(pA, i + 1, right);
}
int main() {
int i, n, a[100];
printf("please input the total of numbers:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("number %d is:", i + 1);
scanf("%d", &a[i]);
}
quickSort(&a, 0, n - 1);
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
所以你調用'快速排序()''內快速排序()'?你如何期待這個循環結束? – Flikk
單擊'while(i!= j)左邊的灰色區域'出現紅點;它被稱爲「斷點」。按F5運行您的代碼。一旦到達紅點線,程序將暫停,並等待你的行動。按F10進入下一行。如果光標正在進行函數調用,請按F11進入該函數。要了解更多這類技巧,請在您最喜愛的搜索引擎中搜索「VS調試」。 – dasblinkenlight
你需要一個停止條件。如果slice的大小小於2,則應該返回'quickSort'而不對其自身進行任何新的調用。 –