c语言冒泡排序报错怎么办?

img


c语言冒泡排序出现问题,根本没有排序,而且每个数字粘连在一起中间没有分开,程序我感觉是没有问题的,请求各位指点!

  1. 数据粘在一起是因为printf的时候没有加空格。
  2. 排序错误是j的for循环那里写错了,不是i<=N-1,是j啊。

综上:

#include <stdio.h>

#define N 15

int main()
{
    int i, j, t;
    int a[N] = { 10, 1, 23, -5, 0, 78, 11, 104, 65, -1, 12 ,23, 36, 3, 53 };
    printf("待排数据: ");
    for (i = 0; i < N; i++) printf("%d ", a[i]);  // 加上空格,数据就不会粘在一起
    for (j = 0; j <= N - 1; j++)  // 这里写错了,你本来写的是i <= N - 1
    {
        for (i = 0; i <= N - j; i++)
        {
            if (a[i] < a[i + 1])
            {
                t = a[i];
                a[i] = a[i + 1];
                a[i + 1] = t;
            }
        }
    }
    printf("\n排序后: ");
    for (i = 0; i < N; i++) printf("%d ", a[i]);
    return 0;
}