用c语言快速排序给n个数字排序(n<=300000) 输入:第一行输入一个整数,第二行输入n个数字 输出:输出排序后的n个数字 样例:输入:5 54312 输出:12345
时间: 2024-09-23 13:10:11 浏览: 45
C语言快速排序与二分查找算法示例
快速排序是一种高效的排序算法,尤其适合处理大规模数据。在C语言中,我们可以用递归的方式来实现快速排序。以下是基本步骤:
1. 选择一个基准元素(通常选择第一个元素),称为"pivot"。
2. 将数组分为两个部分:一部分包含所有小于基准的元素,另一部分包含所有大于或等于基准的元素。
3. 对这两个部分分别进行递归快速排序。
4. 当子数组只有一个元素或者为空时,停止递归。
下面是简单的C语言代码实现快速排序:
```c
#include <stdio.h>
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int arr[], int low, int high) {
int pivot = arr[low];
while (low < high) {
while (arr[high] >= pivot) high--;
arr[low] = arr[high];
while (arr[low] <= pivot) low++;
arr[high] = arr[low];
}
arr[low] = pivot;
return low;
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
// 主函数用于读取输入并调用快速排序
int main() {
int n, i;
scanf("%d", &n);
int arr[n];
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
quickSort(arr, 0, n - 1);
// 输出排序后的数组
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
样例输入:
```bash
5
54312
```
运行上述代码后,会输出:
```bash
12345
```
阅读全文