Как вы делаете Bubble Sort для массива в C ++? - PullRequest
0 голосов
/ 20 февраля 2020

Мне дано 4 цифры, которые я должен ввести и использовать сортировку по пузырькам, чтобы отсортировать их по возрастанию. Вот что у меня сейчас есть для сортировки пузырьков:

void bubble_sort()
{
    for (int i=0;i<4;i++)
    {
        if(num[i]>num[i+1])
        {
            float temp;
            temp=num[i+1];
            num[i]=num[i+1];
            num[i+1]=temp;
        }
    }
}

Когда я вывожу массив с входами: 3.72, 3.92, 3.46 и 3.86, я получаю: 3.72, 3.46, 3.46, 0

1 Ответ

2 голосов
/ 20 февраля 2020

Некоторые из ошибок, представленных в коде, следующие:

  1. Неправильная замена значений. (как указано в комментариях к вопросу)
  2. Если значение j будет равно 3, в этом случае оно будет собирать значение мусора в индексе 4 при запуске temp = num[j+1].
  3. Только один for l oop, повторяющий l oop только один раз. Пожалуйста, ознакомьтесь с основами работы и сложностью пузырьковой сортировки и с тем, как она использует как минимум два цикла из здесь

Теперь правильный ответ будет иметь вид

    void bubble_sort(float num[]) {
    for (int i=0;i<4;i++) {
        for(int j=0;j<3;j++){
            if(num[j]>num[j+1])
            {
                float temp;
                temp=num[j+1];
                num[j+1]=num[j];
                num[j]=temp;
            }
        }
      }
    for(int i=0;i<4;i++)
        cout<<num[i];
    }
...