我想了解如何(使用快速排序算法)按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