柒个喵 2021-10-11 23:22 采纳率: 100%
浏览 48
已结题

算法冒泡排序出现了错误

代码:

#include<stdio.h>
#define DataType int
#define N 8
    void BubbleSort(DataType a[], int n)
    {
        int flag = 1;
        int i, j;
        DataType temp;
        for (j = 1;j < n && flag == 1; i++)
        {
            flag = 0;
            for (i = 1;i <= n - j; i++)
            {
            
                if (  a[i] > a[i + 1])
                {
                    flag = 1;
                    temp = a[i];
                    a[i] = a[i + 1];
                    a[i + 1] = temp;
                }
            }
        }
    }
    int main()
    {
        DataType a[N] = { 4,9,1,8,21,13,42,27 };
        int i = 0;
        BubbleSort(a, 8);
        for (i = 0;i < 8;i++)
        {
            printf("%d", a[N]);
        }
        return 0;
    }


```已经没有语序的错误了,但是最后说是a的栈堆被破坏,
问题显示:Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
我不知道怎么改了。
  • 写回答

2条回答 默认 最新

  • 关注

    修改后如下:
    算法本身有一点问题,下面输出的时候循环内应为 printf("%d ", a[i]);而不是 printf("%d ", a[N]);,后者会直接造成数组越界并输出乱码
    有帮助望采纳~

    #include <stdio.h>
    #define DataType int
    #define N 8
    void BubbleSort(DataType a[], int n)
    {
        int flag = 1;
        int i, j;
        DataType temp;
        for (j = 0; j < n && flag == 1; j++)
        {
            flag = 0;
            for (i = 0; i < n - j - 1; i++)
            {
                if (a[i] > a[i + 1])
                {
                    flag = 1;
                    temp = a[i];
                    a[i] = a[i + 1];
                    a[i + 1] = temp;
                }
            }
        }
    }
    int main()
    {
        DataType a[N] = {4, 9, 1, 8, 21, 13, 42, 27};
        int i = 0;
        BubbleSort(a, 8);
        for (i = 0; i < 8; i++)
        {
            printf("%d ", a[i]);
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月17日
  • 已采纳回答 10月11日
  • 创建了问题 10月11日

悬赏问题

  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类