排序 输入格式: 输入第一行一个正整数n,表示待排序的元素个数。第二行为n个整数,表示待排序的元素。n不超过50000。 输出格式: 输出为一行,表示排序结果,每个整数后一个空格。 输入样例: 5 5 4 3 2 1 输出样例: 1 2 3 4 5 c语言代码实现
时间: 2024-03-27 12:37:39 浏览: 51
以下是基于快速排序算法的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[high];
int i = low - 1;
for(int j=low; j<high; j++){
if(arr[j] < pivot){
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i+1], &arr[high]);
return i+1;
}
void quicksort(int arr[], int low, int high){
if(low < high){
int pivot = partition(arr, low, high);
quicksort(arr, low, pivot-1);
quicksort(arr, pivot+1, high);
}
}
int main(){
int n;
scanf("%d", &n);
int arr[n];
for(int i=0; i<n; i++){
scanf("%d", &arr[i]);
}
quicksort(arr, 0, n-1);
for(int i=0; i<n; i++){
printf("%d ", arr[i]);
}
return 0;
}
```
这是一个基于快速排序算法的实现。时间复杂度为O(nlogn),空间复杂度为O(1)。
阅读全文