数据结构完成快速排序函数,实现快速排序思想#include <stdio.h> void print(int a[] ,int n) {//输出数组元素,数字之间以一个空格为界,输出结束后换一行 } void qSort(int a[] ,int left, int right) // { }
时间: 2024-03-02 16:50:06 浏览: 56
Java 快速排序(QuickSort)原理及实现代码
好的,我知道了。下面是实现快速排序的代码:
```
#include <stdio.h>
void print(int a[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
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++;
swap(&a[i], &a[j]);
}
}
swap(&a[i+1], &a[right]);
return i + 1;
}
void qSort(int a[], int left, int right) {
if (left < right) {
int pivot = partition(a, left, right);
qSort(a, left, pivot - 1);
qSort(a, pivot + 1, right);
}
}
int main() {
int a[] = {5, 2, 9, 3, 7, 6, 8, 1, 4};
int n = sizeof(a) / sizeof(a[0]);
printf("Before sorting: ");
print(a, n);
qSort(a, 0, n - 1);
printf("After sorting: ");
print(a, n);
return 0;
}
```
其中,`partition` 函数实现了快速排序中的分区操作,将数组分成小于等于 pivot 的左半部分和大于 pivot 的右半部分,并返回 pivot 的位置。`qSort` 函数则通过递归的方式,对左右两部分进行快速排序。在 `main` 函数中,我们定义了一个数组 `a`,并将其传入 `qSort` 函数中进行排序。执行结果如下:
```
Before sorting: 5 2 9 3 7 6 8 1 4
After sorting: 1 2 3 4 5 6 7 8 9
```
阅读全文