自己定义qsort函数
时间: 2024-01-25 20:03:13 浏览: 57
qsort
qsort函数是C标准库中的一个快速排序函数,可以对数组进行排序。以下是自己定义的qsort函数的示例代码:
```c
#include <stdio.h>
void my_qsort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int pivot = arr[left];
int i = left, j = right;
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
arr[i] = arr[j];
while (i < j && arr[i] <= pivot) {
i++;
}
arr[j] = arr[i];
}
arr[i] = pivot;
my_qsort(arr, left, i - 1);
my_qsort(arr, i + 1, right);
}
int main() {
int arr[] = {5, 2, 3, 1, 4};
int n = sizeof(arr) / sizeof(arr[0]);
my_qsort(arr, 0, n - 1);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
该示例代码使用了递归的方式实现快速排序。首先将数组的左边界和右边界作为参数传入函数中,如果左边界大于等于右边界,则直接返回。然后选择数组的第一个元素作为基准值(pivot),使用双指针法将数组中小于基准值的元素移到基准值的左边,大于基准值的元素移到基准值的右边,最后将基准值插入到分界点的位置。接着递归地对基准值左边的子数组和右边的子数组进行排序。最后打印出排序后的数组。
阅读全文