我是C編程新手,正在嘗試快速排序記錄數組。我不知道如果我正確地發送記錄的功能,但我的錯誤是快速排序一個記錄數組(結構)
error: conversion from "TaxRecord*" to non-scalar type "TaxRecord" requested
error: no match for "operator<" in "*(table + ((unsigned int)(((unsigned int)left) * 104u))) < pivot"
void qsort(TaxRecord table,int start,int finish);
qsort(theEmployees[i],0,i);
void qsort(TaxRecord table[],int start,int finish)
{
int left = start,
right = finish;
TaxRecord pivot = table[((start+finish)/2)];
TaxRecord temp = table;
while (left < right) {
// find left candidate
while (table[left] < pivot) left++;
// find right candidate
while (table[right] > pivot) right--;
if (left <= right) {
int temp = table[left];
table[left] = table[right];
table[right] = temp;
left++;
right--;
}
} // while left < right
if (start < right) qsort(table,start,right);
if (left < finish) qsort(table,left,finish);
}
標準庫實現有什麼問題? –
聲明'void qsort(TaxRecord表,int start,int finish);'但實現了'void qsort(TaxRecord table [],int start,int finish);''不知道這是否是問題。另外,如果TaxRecord是一個類/結構體,那麼您必須定義<運算符以使用它。如果它是一個類,那麼我也建議你不要一直拷貝它,而是使用引用或指針 – PeterT
C++解決方案將是定義<運算符,並使用一個向量和std :: sort ... – Lalaland