用c 语言写个快速排序
时间: 2023-07-12 13:30:41 浏览: 30
下面是用 C 语言实现的快速排序算法的代码:
```c
#include <stdio.h>
void quicksort(int arr[], int left, int right) {
int i, j, pivot, temp;
if (left < right) {
pivot = left;
i = left;
j = right;
while (i < j) {
while (arr[i] <= arr[pivot] && i <= right) {
i++;
}
while (arr[j] > arr[pivot] && j >= left) {
j--;
}
if (i < j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[j];
arr[j] = arr[pivot];
arr[pivot] = temp;
quicksort(arr, left, j - 1);
quicksort(arr, j + 1, right);
}
}
int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
quicksort(arr, 0, n - 1);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个实现中,我们定义了一个 `quicksort()` 函数来对数组进行排序。函数接受三个参数:要排序的数组,数组的左侧索引和右侧索引。
首先,我们选择数组的第一个元素作为枢轴,然后定义两个指针 `i` 和 `j`,分别从左右两侧扫描数组。我们移动这些指针直到它们指向的元素需要交换位置。如果 `i` 指向的元素比枢轴小,或者 `j` 指向的元素比枢轴大,我们就交换它们。
重复这个过程直到 `i` 和 `j` 相遇。然后我们将枢轴放在它应该在的位置,并将数组分成两部分。我们递归地对这两部分分别运行 `quicksort()` 函数,直到数组中的所有元素都被排序。
在 `main()` 函数中,我们定义了一个整数数组并调用 `quicksort()` 函数来对它进行排序。最后,我们输出排序后的数组。
相关推荐
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)