用qsort排序,而且同时对两个数组进行排序,排序的规则就是两个数组的商
时间: 2024-11-25 15:10:42 浏览: 15
在C语言中,如果你想要同时使用`qsort`函数对两个数组按其元素的商进行排序,你需要提供一个自定义的比较函数给`qsort`,这个函数会接受两个指向两个数组元素的指针,计算他们的商并返回一个负数、零或正数,表示第一个元素应该排在第二个元素之前、相等还是之后。
这里是一个简单的例子,假设你有两个double类型的数组`array1`和`array2`:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 自定义比较函数
int compare(const void* a, const void* b) {
double num1 = ((const double*)a)[0] / ((const double*)b)[0];
double num2 = ((const double*)a)[1] / ((const double*)b)[1];
if (num1 < num2) {
return -1;
} else if (num1 > num2) {
return 1;
} else {
return 0; // 如果商相等,则保持它们原有的顺序
}
}
void sortArrays(double array1[], double array2[], int n) {
qsort(array1, n, sizeof(double), compare);
qsort(array2, n, sizeof(double), compare);
}
int main() {
double array1[] = {5.0, 2.0, 7.0, 3.0};
double array2[] = {10.0, 4.0, 14.0, 6.0};
int n = sizeof(array1) / sizeof(array1[0]);
sortArrays(array1, array2, n);
printf("Sorted arrays by their quotients:\n");
for (int i = 0; i < n; i++) {
printf("%.1f / %.1f -> %lf\n", array1[i], array2[i], array1[i] / array2[i]);
}
return 0;
}
```
阅读全文