冒泡排序功能中出现意外0

时间:2015-02-21 19:58:28

标签: c bubble-sort

我是C语言的新手,我正在学习编写冒泡排序的基本功能。一切似乎都很好,其余的程序运行良好。但是,输出中出现意外的0。我检查了我的代码,我不知道为什么。有人能帮助我吗? 输入和输出样本:

The orginal number set is:   23   12   17    8    5   46   75   19   11    4
The sorted number set is:  0  4  5  8 11 12 17 19 23 46

代码是:

// wirte a program of bubble sort

#include <stdio.h>
#include <string.h>

int main(void)
{
    int num[10];    // a set to store10 numbers
    int temp;   //a temporary variable
    int i,r,t,p,d;  //counters
    //store 10 numbers 
    for(i=0; i<10;++i)
    {
        printf("\nPlease enter the %dth number.\n",i+1);
        scanf("%d",&num[i]);
    }
    printf("\n");
    //display 10 numbers
    printf("The orginal number set is:");
    for(r=0; r<10; ++r)
    {
        printf("%5d",num[r]);    
    }
    printf("\n");
    //start to sort these numbers
    for (p=0;p<10;++p)    
    {
        for(t=0;t<10;++t)
        {
            if(num[t]>num[t+1])
            {
                temp=num[t];
                num[t]=num[t+1];
                num[t+1]=temp;
            } 
        } 
    }
    //print out the sorted set
    printf("The sorted number set is:");
    for(d=0;d<10;++d)
    {
        printf("%3d",num[d]);
    }
    printf("\n");
}

1 个答案:

答案 0 :(得分:2)

比较值时。您还将最后一个与数组外的第一个进行比较。这恰好是0(未定义的行为,完全依赖于编译器)并且被切换.for-loop应该变为:

for (p=0;p<10;++p)    
{
    for(t=0;t<9;++t)
    {
        if(num[t]>num[t+1])
        {
            temp=num[t];
            num[t]=num[t+1];
            num[t+1]=temp;
        } 
    } 
}