我的比较函数是一个简单的返回true或false。我的BubbleSort通过向量一次进行排序,对其进行一次排序,但不会继续进行排序。因此,如果数字是1,5,2,4,3,6,我将获得5,1,4,2,6,3。而不是1,2,3,4,5,6。如果我使用我的bool交换了,有一个错误。这是代码:
void bSort(vector<int> &vector1, bool (*compare) (int a, int b))
{
bool swapped = true; //using swapped in following code causes crash
while(swapped)
{
swapped = false;
for (int i = 0; i < vector1.size(); ++i)
{
for (int j = 1; j < vector1.size(); ++j)
{
if ((*compare)(vector1[i], vector1[j]) == true)
{
swap(vector1[i], vector1[j]);
swapped = true;
}
}
}
}
}
之前我见过这样的函数,现在我正在尝试实现它,因为我想学习。请帮忙。
编辑: 这是固定和工作功能! :)
void bSort(vector<int> &vector1, bool (*compare) (int a, int b))
{
bool swapped = true;
while(swapped)
{
swapped = false;
for (int i = 0; i < vector1.size(); ++i)
{
if ((*compare)(vector1[i], vector1[i+1]) == true)
{
swap(vector1[i], vector1[i+1]);
swapped = true;
}
}
}
}