我是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