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

Bubble sort loop, changes one number to 0

本文关键字:数字 一个 循环 排序 气泡      更新时间:2023-10-16

我对编程很陌生。正如标题所说,我编写了简单的气泡排序代码。有 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);
}

sort_bubble 内部的循环中,i04 ,你使用 numbers[i+1] 最后将是 numbers[5] 这是数组的无效数字。改为使循环for (int i = 0; i < 4; i++)

你的数组有 5 个元素。

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

相关文章: