【问题标题】:First value in Bubble method shows huge negative numberBubble 方法中的第一个值显示巨大的负数
【发布时间】:2022-06-15 18:16:17
【问题描述】:

这是我在这里的第一篇文章。我是这种事情的新手。

我正在尝试学习冒泡法。一切正常,除了第一个数字总是显示一个完整的随机负数。例如,我刚刚运行程序,它说:
-858993460, 2, 2, 3, 5, 而不是
2, 2, 3, 5, 8 ,这应该是它应该说的。
它使用 srand 填充数组,这样我就可以连续测试它而无需输入任何内容。

这是代码,我的主要语言是西班牙语,所以如果有人来自讲西班牙语的国家/地区看到此内容,请随时用西班牙语回答:)

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <time.h>

using namespace std;

void randomArray(int[], int);
void mostrarArray(int[], int);

int main()
{

    int i = 0, j = 0, array[5], cantElementos = 5, aux = 0;
    srand(time(NULL));



    
    randomArray(array, cantElementos);
    mostrarArray(array, cantElementos);

    for (i = 0; i < cantElementos; i++) {

        for (j = 0; j < cantElementos; j++) {

            if (array[j] > array[j + 1]) {

                aux = array[j];
                array[j] = array[j + 1];
                array[j + 1] = aux;



            }

        }
    }

    printf("\nEl array arreglado es:\n");
    mostrarArray(array, cantElementos);


    return 0;

}

void randomArray(int array[], int cantElementos) {

    int i = 0;

    for (i = 0; i < cantElementos; i++) {

        array[i] = rand() % 10 + 1;

        }

    

}

void mostrarArray(int array[], int cantElementos) {

    int i = 0;

    for (i = 0; i < cantElementos; i++) {


        printf("%d, ", array[i]);

    }

    printf("\n\n");


}

【问题讨论】:

  • array[j + 1] 由于您的内部循环的范围,是一个越界访问。
  • 您可以使用for (j = 0; j &lt; cantElementos - 1; j++) ... 或者,使用for (j = 1; j &lt; cantElementos; j++) 并使用j-1j 作为if
  • @paddy 哇,真快!我不明白,我应该如何编写代码?我在尝试自己修复后观看了有关如何解决练习的视频,他写了那些确切的东西。我复制粘贴了它,问题仍然存在:(
  • @ChrisMM 谢谢!!解决了它,现在我看到了我应该写的东西,我明白了这个错误。再次感谢,你们回答的速度给我留下了深刻的印象!

标签: c sorting


猜你喜欢
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多