你如何在c ++中使用带指针的冒泡排序?

时间:2010-02-06 21:28:18

标签: c++ arrays pointers bubble-sort

所以这就是我到目前为止所拥有的:

void sortArray(int amountOfScores, int* testScores)
{
    for(int i = 0; i < amountOfScores; i++)
    {
        for(int j = 0; j < amountOfScores-1; j++)
        {
            if(*(testScores+i) > *(testScores+j+1))
            {
                int temp = *(testScores+j);
                *(testScores+j) = *(testScores+j+1);
                *(testScores+j+1) = temp;
            }
        }
    }       
    for(int i = 0; i < amountOfScores; i++)
    {
        cout << *(testScores+i) << endl;
    }
}

基本上我试图读取用户想要输入的许多数字,然后按升序对它们进行排序。 Catch是我必须使用指针,我从来没有真正理解它们。上面的代码适用于3个数字,但是,添加更多会导致它不对它们进行排序...我尽可能地尝试了解决问题,但是在没有任何指针知识的情况下我不知道我在寻找什么。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

你的问题可能就在这里:

    if(*(testScores+i) > *(testScores+j+1)) 

你的意思是:

        if(*(testScores+j) > *(testScores+j+1)) 

(注意我用j代替)。

顺便说一句,在冒泡排序中,如果没有互换,你应该打破。在某些情况下,这会导致加速。

答案 1 :(得分:1)

无论你是在谈论数组还是链表(指针),冒泡排序都是一样的。

唯一的问题是,不是交换数组中两个相邻项的位置,而是在两个相邻列表元素之间交换指针值。

算法是一样的。