📅  最后修改于: 2023-12-03 15:00:12.421000             🧑  作者: Mango
有一个包含n个元素的整数数组,需要将其按照升序排序。请写一个程序实现该功能。
我们可以使用C语言的标准库函数qsort来实现排序。qsort函数接受四个参数:
void qsort(void* base, size_t num, size_t size, int (*compar)(const void*, const void*));
其中:
比较函数需要根据参数qsort提供的两个元素,返回一个负整数、零或正整数,表示相对顺序。如果第一个元素在第二个元素之前,则返回负整数;如果两个元素相等,则返回零;如果第一个元素在第二个元素之后,则返回正整数。
例如,以下函数将两个整数按升序排列:
int compareAsc(const void* a, const void* b) {
int num1 = *(int*)a;
int num2 = *(int*)b;
if (num1 < num2) return -1;
else if (num1 == num2) return 0;
else return 1;
}
有了比较函数,我们可以调用qsort函数来对数组进行排序:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
int compareAsc(const void* a, const void* b) {
int num1 = *(int*)a;
int num2 = *(int*)b;
if (num1 < num2) return -1;
else if (num1 == num2) return 0;
else return 1;
}
int main() {
int array[MAX_SIZE], num;
printf("请输入数组元素个数:");
scanf("%d", &num);
printf("请输入数组元素:\n");
for (int i = 0; i < num; i++) {
scanf("%d", &array[i]);
}
qsort(array, num, sizeof(int), compareAsc);
printf("排序结果:");
for (int i = 0; i < num; i++) {
printf("%d ", array[i]);
}
printf("\n");
return 0;
}
这里我们先输入数组元素的个数和值,然后调用qsort排序,最后输出排序结果。
使用标准库函数qsort来对数组进行排序是一个简单而实用的方法。我们只需要实现一个比较函数来确定排序的方式,剩下的工作就交给qsort处理即可。