使用 C 中的子例程对并行数组进行排序的最佳或最有效方法?
Best or most efficient way to sort parallel arrays using subroutines in C?
好的,用户输入姓名和年龄。输出需要按升序打印。我做过冒泡排序,但我不知道如何跟踪名字的年龄。一种排序方法比另一种更好或更容易吗?
不用一堆数组,你可以把你需要的所有东西都放进一个struct
,做一个structs
的数组。例如:
struct user {
char name[100];
int age;
};
struct user user_array[100];
或者,如果您不想更改整个代码,只需在某处制作一个交换函数,并且在您的排序算法中,不要直接交换元素,只需调用一个交换函数即可。例如,假设您有
char name[100][100];
int age[100];
交换函数看起来像
void swap_users(int a, int b, char ** name, int * age)
{
int age_tmp;
char *name_tmp;
age_tmp = age [a]; age [a] = age [b]; age [b] = age_tmp;
name_tmp = name[a]; name[a] = name[b]; name[b] = name_tmp;
}
您的排序算法将如下所示:
void some_sorting_algorithm()
{
// do something ...
// do something ...
// maybe some loop? ...
swap_users(x, y, name, age);
// continue the loop or doing something
}
PS:希望我理解正确你的问题。
好的,用户输入姓名和年龄。输出需要按升序打印。我做过冒泡排序,但我不知道如何跟踪名字的年龄。一种排序方法比另一种更好或更容易吗?
不用一堆数组,你可以把你需要的所有东西都放进一个struct
,做一个structs
的数组。例如:
struct user {
char name[100];
int age;
};
struct user user_array[100];
或者,如果您不想更改整个代码,只需在某处制作一个交换函数,并且在您的排序算法中,不要直接交换元素,只需调用一个交换函数即可。例如,假设您有
char name[100][100];
int age[100];
交换函数看起来像
void swap_users(int a, int b, char ** name, int * age)
{
int age_tmp;
char *name_tmp;
age_tmp = age [a]; age [a] = age [b]; age [b] = age_tmp;
name_tmp = name[a]; name[a] = name[b]; name[b] = name_tmp;
}
您的排序算法将如下所示:
void some_sorting_algorithm()
{
// do something ...
// do something ...
// maybe some loop? ...
swap_users(x, y, name, age);
// continue the loop or doing something
}
PS:希望我理解正确你的问题。