我正在为我的大学考试开发此程序。我需要使用排序算法对乘客数组进行排序(由于其简单性,我选择Bubblesort)。 我需要创建一个泛型函数并将其作为形式参数传递: -我要排序的对象列表; -一种排序标准。
所以我认为我只需要创建1个递增排序函数和1个递减排序函数,然后将参数传递给它们即可。
我已经尝试过将char * file_name传递给函数,但是我认为我错了。
int passengersIncreasingBubbleSort_Birthyear(passengers test[], int x) {
int i = 0, j = 0, min_idx, flag = 0;
passengers temp;
for (i = 0; i < x; i++) {
min_idx = i;
for (j = i + 1; j < x; j++) {
if (test[j].birth_date.year < test[min_idx].birth_date.year) {
min_idx = j;
}
}
temp = test[min_idx];
test[min_idx] = test[i];
test[i] = temp;
flag = 1;
}
return flag;
}
我尝试过:
int passengersIncreasingBubbleSort_Birthyear(passengers test[], int x, char *value1, char *value2) {
int i = 0, j = 0, min_idx, flag = 0;
passengers temp;
for (i = 0; i < x; i++) {
min_idx = i;
for (j = i + 1; j < x; j++) {
if (value1 < value2) {
min_idx = j;
}
}
temp = test[min_idx];
test[min_idx] = test[i];
test[i] = temp;
flag = 1;
}
return flag;
}
但是它没有按预期工作。
好,我做到了。
int cmpfunction_Increasing_Birthdate (const void * a, const void * b)
{
passengers *passengerA = (passengers *)a;
passengers *passengerB = (passengers *)b;
return ( passengerA->signup_date.year - passengerB->signup_date.year );
}
这是我的电话:
qsort(array, x, sizeof(passengers), cmpfunction_Increasing_Birthdate);
现在的问题是,我又如何比较年,月和日?我可以在同一比较功能中做到吗?