使用C中的子程序对并行数组进行排序的最佳或最有效的方法?

时间:2015-04-15 22:21:36

标签: c sorting subroutine

好的,用户输入姓名和年龄。输出需要按升序打印。我已经完成了泡泡排序,但我不知道如何用名字跟踪年龄。一种方法比另一种方法更好还是更容易?

1 个答案:

答案 0 :(得分:2)

您可以将所需内容放入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 :希望我能正确理解你的问题。