3

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

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;
    }
}

基本上,我试图读取用户想要输入的任何数字,然后按升序对它们进行排序。抓住的是我必须使用指针,而我从来没有真正理解过它们。上面的代码适用于 3 个数字,但是,添加更多会导致它无法对它们进行排序......我已经尽我所能尝试了故障排除,但没有任何指针知识,我不知道我在寻找什么。

谢谢您的帮助!

4

2 回答 2

3

你的问题可能在这里:

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

你的意思是:

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

(注 i 由 j 代替)。

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

于 2010-02-06T21:35:00.377 回答
1

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

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

算法是一样的。

于 2010-02-06T21:35:53.537 回答