我想了解如何(使用快速排序算法)按2个标准对结构数组进行排序。例如说我有一个结构:使用多个排序标准对数组进行排序(QuickSort)
struct employee{
char gender[12];
char name[12];
int id;
};
说我的输入为:
struct employee arr[3]=
{
{"male","Matt",1234},
{"female","Jessica",2345},
{"male","Josh",1235}
};
我想按性别升序排列元素第一则的ID进行排序。一个例子就是让所有的男性先打印他们的ID,然后再打印所有的女性。我试图做到这一点,而不使用qsort函数,但我没有丝毫的想法如何检查。这里是我的排序功能:
void quicksort(struct employee *arr, int left, int right)
{
int pivot, l, r, temp;
if(left < right)
{
p = left;
l = left;
r = right;
while(l < r)
{
while(arr[l].id <= arr[p].id && l <= right)
l++;
while(arr[r].id > arr[p].id && r >= left)
r--;
if(l < r)
{
temp = arr[l].id;
arr[l].id = arr[r].id;
arr[r].id = temp;
}
}
temp = arr[r].id;
arr[r].id = arr[p].id;
arr[p].id = temp;
quicksort(arr, left, r-1);
quicksort(arr, r+1, right);
}
}
有什么建议吗?我在想我可以使用strcmp,但我无法弄清楚它在函数中的位置。
谢谢,我不知道,但我想看看它是如何工作的,如果它是硬编码不使用快速排序 – bardockyo