一维数组排序怎么用C语言写?
时间: 2024-12-08 08:23:41 浏览: 14
在C语言中,对一维数组进行排序通常可以使用选择排序、冒泡排序、插入排序、快速排序、归并排序等算法。这里以快速排序为例,因为它是一种高效的通用排序算法。下面是一个简单的快速排序函数实现:
```c
#include <stdio.h>
// 交换两个元素
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
// 选择第一个元素作为基准值,然后将小于它的元素放在左边,大于它的元素放在右边
int partition(int arr[], int low, int high) {
int pivot = arr[high]; // 最后一个元素通常是基准
int i = (low - 1); // Index of smaller element
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++; // increment index of smaller element
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 pi = partition(arr, low, high);
quickSort(arr, low, pi - 1); // 对左半部分递归排序
quickSort(arr, pi + 1, high); // 对右半部分递归排序
}
}
// 测试排序函数
void printArray(int arr[], int size) {
int i;
for (i = 0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}
int main() {
int arr[] = {9, 7, 5, 11, 12, 2, 14, 3};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array:\n");
printArray(arr, n);
quickSort(arr, 0, n - 1);
printf("\nSorted array using Quick Sort:\n");
printArray(arr, n);
return 0;
}
```
这个程序首先定义了一个快速排序函数`quickSort`,它会根据`partition`函数将数组分为两部分,并分别对这两部分递归地应用快速排序。最后,在`main`函数中创建一个数组并调用`quickSort`对其进行排序。
阅读全文