Как вы используете пузырьковую сортировку с указателями в C ++? - PullRequest
3 голосов
/ 07 февраля 2010

Итак, вот что у меня есть:

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-х чисел, но добавление еще одного приводит к тому, что он не сортируется ... Я старался изо всех сил стараться изо всех сил, но без знания указателей я не знаю, что я ищу.

Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 07 февраля 2010

Ваша проблема может быть здесь:

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

Вы имели в виду:

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

(обратите внимание, я заменен на j).

Кстати, в Bubble, если нет свопов, вы должны сломаться. Это приведет к ускорению в некоторых случаях.

1 голос
/ 07 февраля 2010

Bubble sort работает одинаково, независимо от того, говорите ли вы массив или связанный список (указатели).

Единственный улов заключается в том, что вместо того, чтобы поменять местами расположение двух соседних элементов в массиве, вы меняете значения указателя между двумя соседними элементами списка.

Алгоритм такой же.

...