按升序对数组进行排序。编译后没有输出。似乎无法理解这个问题。

时间:2017-10-21 15:16:16

标签: c sorting

编译后没有输出。似乎无法理解这个问题。编译时也没有错误。

#include<stdio.h>
void main(void)
{
    int a[] = {5,4,3,2,1};
    int i,j,min,b[5];
    min = a[0];
    for(i=0;i<sizeof(a);i++)
    {
        if(a[i]<min)
        {
            j = a[i];
            a[i] = min;
            min = j;
        }
        b[i] = min;
    }
    for(i=0;i<sizeof(b);i++)
    {
        printf("%d,",b[i]);
    }
}

1 个答案:

答案 0 :(得分:1)

改变这个:

sizeof(a)

到此:

sizeof(a)/sizeof(a[0])

因为sizeof运算符以字节为单位给出数组a的大小,而不是您想要的元素数。因此,除以数组元素的大小(以数字为单位)(数组的所有元素都具有相同的大小),这样就可以得到元素的数量。

sizeof(b)相同。

您的算法似乎不太正确。我建议你看一下pseudocode of Bubble sort

PS:What should main() return in C and C++? int