gpt4 book ai didi

c - 在冒泡排序中获取垃圾值以获得 C 中的最高值

转载 作者:行者123 更新时间:2023-11-30 14:19:51 24 4
gpt4 key购买 nike

我面临的问题是数组中的最高值被随机垃圾负值替换。我无法找到问题所在。这是该程序的完整源代码 -

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

int main()
{
int num[10],i,choice,counter=1;
printf("\n\n=====Program To Sort Integer Array=====\n\n");
printf("\nPlease Enter 10 Array Elements = \n");
for (i = 0; i < 10; i++)
{
printf("\nPlease Enter The %d Element Of The Array\n", i);
scanf("%d", &num[i]);

}
printf("\n\nHow Would You Like To Sort The Entered Array?\n1. Bubble Sort\n2. Selection Sort\n3. Insertion Sort\n\n");
scanf("%d", &choice);
switch (choice)
{
case 1:{

printf("\nYou Have Selected Bubble Sort\n");
while (counter != 0)
{
counter = 0;
for (i = 0; i < 10; i++)
{

if (num[i]>num[i + 1])
{
int temp=0;
temp = num[i];
num[i] = num[i + 1];
num[i + 1] = temp;
counter++;
break;
}
}
}
printf("\n\nThe Array In Ascending Order Is =\n");
for (i = 0; i < 10; i++)
{
printf("\n%d", num[i]);
}

break;
}
default:
break;
}
_getch();
}

数组正在部分排序,但最大的数字正在被替换。另外,我正在使用 Visual Studio。

提前致谢

最佳答案

for (i = 0; i < 10; i++){    if (num[i]>num[i + 1])    {        int temp=0;        temp = num[i];        num[i] = num[i + 1];        num[i + 1] = temp;        counter++;        break;    }}

当我到达 9 点时会发生什么?您比较 num[9] 和 num[10] - 第 10 个和第 11 个元素。

我假设您已经知道如果尝试访问越界数组元素会发生什么。如果越界值恰好大于 num[9],则将其与 num[9] 交换 - 所以现在数组有一个垃圾值,而您只是覆盖了不属于数组的一部分。

解决方案:更改i < 10i < 9 。仅需要检查 9 对元素(0/1、1/2、2/3、...、8/9)。

关于c - 在冒泡排序中获取垃圾值以获得 C 中的最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21477497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com