数据结构完成快速排序函数,实现快速排序思想#include <stdio.h> void print(int a[] ,int n) {//输出数组元素,数字之间以一个空格为界,输出结束后换一行 } void qSort(int a[] ,int left, int 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-03-02 14:50:59 浏览: 69
好的,以下是代码实现:
```
#include <stdio.h>
void print(int a[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
int partition(int a[], int left, int right) {
int pivot = a[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (a[j] <= pivot) {
i++;
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
int temp = a[i + 1];
a[i + 1] = a[right];
a[right] = temp;
return i + 1;
}
void quickSort(int a[], int left, int right) {
if (left < right) {
int pivotIndex = partition(a, left, right);
quickSort(a, left, pivotIndex - 1);
quickSort(a, pivotIndex + 1, right);
}
}
int main(void) {
int num;
scanf("%d", &num);
int data[num];
for (int i = 0; i < num; i++) {
scanf("%d", &data[i]);
}
quickSort(data, 0, num - 1);
print(data, num);
return 0;
}
```
其中,`partition` 函数用于分割数组,返回枢轴元素最终的位置,`quickSort` 函数递归地调用 `partition` 函数进行快速排序。
阅读全文