C语言实现
时间: 2023-08-20 15:14:27 浏览: 95
c语言的实现
好的,以下是快速排序的代码实现(C语言版):
```c
#include <stdio.h>
void quick_sort(int arr[], int start, int end);
int partition(int arr[], int start, int end);
void quick_sort(int arr[], int start, int end) {
if (start >= end) // 如果起始下标大于等于终止下标,则直接返回
return;
int p = partition(arr, start, end); // 进行一次 Partition 操作
quick_sort(arr, start, p - 1); // 对左半部分进行快排
quick_sort(arr, p + 1, end); // 对右半部分进行快排
}
int partition(int arr[], int start, int end) {
int pivot = arr[start]; // 选择第一个元素作为基准元素
int left = start, right = end; // 定义左右指针
while (left < right) { // 左右指针未相遇时循环
while (left < right && arr[right] >= pivot) // 右指针先走,直到找到小于基准元素的元素
right--;
arr[left] = arr[right]; // 将小于基准元素的元素移到左边
while (left < right && arr[left] <= pivot) // 左指针后走,直到找到大于基准元素的元素
left++;
arr[right] = arr[left]; // 将大于基准元素的元素移到右边
}
arr[left] = pivot; // 将基准元素放到左右两个部分的中间
return left; // 返回基准元素排好序后的下标
}
int main() {
int n, arr[1000];
scanf("%d", &n); // 输入数组长度
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]); // 输入数组
quick_sort(arr, 0, n - 1); // 进行快速排序
for (int i = 0; i < n; i++)
printf("%d ", arr[i]); // 输出排序后的数组
printf("\n");
return 0;
}
```
以上代码实现了快速排序算法。在 main 函数中,首先输入了数组的长度和数组本身,然后调用 quick_sort 函数进行排序。quick_sort 函数中,先进行了一次 Partition 操作,将数组分为左右两个部分,然后对左半部分和右半部分分别进行递归调用,直至分治完毕。Partition 函数中,选择第一个元素作为基准元素,定义左右指针,然后将小于基准元素的元素移到左边,将大于基准元素的元素移到右边,最后将基准元素放到左右两个部分的中间。
阅读全文