学习使用函数指针实现C ++ BubbleSort

时间:2015-04-23 03:22:25

标签: c++ function sorting pointers

我的比较函数是一个简单的返回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;
                        }
                }
        }
    }

0 个答案:

没有答案