我有一个结构,其中包含ID和等级的平均值,我想对用户选择的数组进行对数组进行分类,而
这是struct
struct Stud {
int id;
float gradeAverage;
float incomeAverage;
int numOfGrades;
struct gradeList *gradelist;
struct incomeList *incomelist;
};
Students students[30];
我试图使用泡泡排序,但没有任何帮助。
void Sort(void* array,int i, int len, int(*comp)(void *a, void *b), void(*swap)(void *a, void *b))
{
int newlen;
while (len != 0) {
newlen = 0;
for (int i = 1; i < len; i++) {
if (!comp(array +i- 1, array + i)) {
swap(array + i - 1, array + i);
newlen = i;
}
}
len = newlen;
}
}
使用 qsort()
使比较功能
int comp(const void *a, const void *b) {
Student *sa = a;
Student *sb = b;
if (BY_ID) return sa->id - sb->id;
// otherwise, by num of grades
return sa->numOfGrades - sb->numOfGrades;
}
致电qsort
#define N 30
qsort(students, N, sizeof(Student), comp);
该结构也需要一些修复,例如
typedef struct Stud {
int id;
float gradeAverage;
float incomeAverage;
int numOfGrades;
struct gradeList *gradelist;
struct incomeList *incomelist;
} Student;
Student students[N]; // see #define above
可读性:no's'在学生中,因为它代表一个 student。