冒泡排序循环,将一个数字更改为0

时间:2017-10-24 11:39:27

标签: c++ sorting

我对编程很陌生。正如标题所说,我写了简单的冒泡排序代码。有3个函数,一个从用户获取数字,第二个打印它们,并且这是第三个,泡泡对数字进行排序。我强迫它至少对数字进行排序,但它仍然将一个数字转为0,我不知道。

#include <iostream>

using namespace std;

void acquire_num();
void print_num();
void sort_bubble();

int numbers[5];


int main()
{
    acquire_num();
    print_num();
    sort_bubble();
    print_num();
}

void acquire_num()
{
    for (int i = 0; i < 5; i++)
    {
        cout << "Write " << i+1 << " number: ";
        cin >> numbers[i];
    }
}

void print_num()
{
    cout << "Your numbers are:";

    for(int i = 0; i < 5; i++)
    {
        cout << " " << numbers[i];
    }
    cout << endl;
}

void sort_bubble()
{
    int indicator;
    int store;

    do
    {
        indicator = 0;
        for (int i = 0; i < 5; i++)
        {
            if(numbers[i] > numbers[i+1])
            {
                indicator = indicator+1;
                store = numbers[i];
                numbers[i] = numbers[i+1];
                numbers[i+1] = store;
            }
        }
    }
    while(indicator != 0);
}

2 个答案:

答案 0 :(得分:1)

i内的04numbers[i+1]转到numbers[5]的循环中,您使用for (int i = 0; i < 4; i++),最后将FirebaseDatabase.getInstance().setPersistenceEnabled(true); `import { AngularFireDatabase } from 'angularfire2/database';` 这是一个无效的数组编号。改为循环{{1}}。

答案 1 :(得分:0)

您的数组有 5 元素。

将当前元素与下一个元素进行比较,您的排序循环需要从 0 运行到 3 ,因为对于4,访问下一个元素将是未定义的行为,因为它在阵列之外。