对一维数组按照从小到大的顺序排序。程序定义函数sort()来实现数组a的排序。函数原型如下: void sort(int a[], int n); 数组元素的输出调用PrintArr()。
时间: 2024-12-08 11:23:42 浏览: 90
对一维整数数组进行从小到大排序,通常我们可以使用基本的排序算法,如冒泡排序、选择排序、插入排序、快速排序或归并排序等。这里我们以经典的快速排序为例,因为它的平均时间复杂度较低。
```c++
#include <stdio.h>
// 交换两个数组元素
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 选择第一个元素作为基准,将小于基准的元素放在左边,大于基准的元素放在右边
int partition(int a[], int low, int high) {
int pivot = a[high]; // 选取最右边的元素作为基准
int i = (low - 1); // 指针i指向左侧
for (int j = low; j <= high - 1; j++) {
if (a[j] < pivot) {
i++; // 将比基准小的元素移到左边
swap(&a[i], &a[j]);
}
}
swap(&a[i + 1], &a[high]); // 将基准放到正确的位置
return (i + 1);
}
// 快速排序函数
void quickSort(int a[], int low, int high) {
if (low < high) {
int pi = partition(a, low, high);
quickSort(a, low, pi - 1); // 对左半部分递归排序
quickSort(a, pi + 1, high); // 对右半部分递归排序
}
}
// 打印数组
void PrintArr(int a[], int size) {
for (int i = 0; i < size; i++)
printf("%d ", a[i]);
printf("\n");
}
// 调用函数进行排序
void sort(int a[], int n) {
quickSort(a, 0, n - 1);
}
int main() {
int arr[] = {5, 9, 1, 7, 3};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, n);
PrintArr(arr, n);
return 0;
}
```
在这个示例中,`sort()`函数会调用`quickSort()`来进行快速排序,最后通过`PrintArr()`函数打印出已排序的数组。注意,这只是一个简单的实现,实际应用中还需要考虑边界条件和性能优化等问题。
阅读全文
相关推荐


















