补全代码 #include <stdio.h> void print(int a[] ,int n) {//输出数组元素,数字之间以一个空格为界,输出结束后换一行 for(int i = 0; i<n;i++){ printf("%d ",a[i]); } printf("\n"); } void qSort(int a[] ,int left, int right) // { while(left<right){ int i = left; int j = right; pivot = a[left]; while(i<j){ while(i<j&&a[j]>=pivot)zz } if(i<j){ a[i++] = a[j]; } while(a[i]<key && i<j){ i++; } if(i<j){ a[j--] = a[i]; } } qSort(a,left,i-1); qSort(a,i+1,right); } int main(void) { int num ; scanf("%d",&num); int data[num]; for(int i=0;i<num;i++) scanf("%d",&data[i]); qSort(data ,0,num-1); print(data,num); }并同时打印每一步排序后的结果
时间: 2024-01-18 11:02:55 浏览: 58
好的,以下是补全后的代码,同时会打印每一步排序后的结果:
#include <stdio.h>
void print(int a[], int n) {//输出数组元素,数字之间以一个空格为界,输出结束后换一行
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
void qSort(int a[], int left, int right) {
if (left < right) {
int i = left, j = right, pivot = a[left];
while (i < j) {
while (i < j && a[j] >= pivot) j--;
if (i < j) a[i++] = a[j];
while (i < j && a[i] <= pivot) i++;
if (i < j) a[j--] = a[i];
}
a[i] = pivot;
print(a, right - left + 1); // 每次排序后打印当前数组
qSort(a, left, i - 1);
qSort(a, i + 1, right);
}
}
int main(void) {
int num;
scanf("%d", &num);
int data[num];
for (int i = 0; i < num; i++) {
scanf("%d", &data[i]);
}
qSort(data, 0, num - 1);
print(data, num);
return 0;
}
阅读全文