柒个喵 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日

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用