首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为何这个冒泡排序只进行一次?感觉代码没有关问题呀【~】

2012-04-28 
为何这个冒泡排序只进行一次?感觉代码没问题呀【求助~】感觉应该没问题的,可是我的vs2010执行完,只进行了依

为何这个冒泡排序只进行一次?感觉代码没问题呀【求助~】
感觉应该没问题的,可是我的vs2010执行完,只进行了依次排序,也就是说只把最大值移到了最右边,求教

C/C++ code
#include <stdio.h>void sort( int * p, int len);void sort( int * p, int len){    int a, b, temp = 0;    for ( a=0; a<len-1; ++a)    {        for ( b=0; b<len-1-a; ++b)        {            if (p[a]>p[a+1])            {                temp = p[a];                p[a] = p[a+1];                p[a+1] = temp;            }        }    }}int main(void){    int a[6];    int i;    printf("请输入六个整数\n");    for ( i=0; i <6; i++){        scanf("%d",&a[i]);    }        printf("这六个数字依次是:\n");    for ( i=0; i <6; i++){        printf("%d\t",a[i]);    }    printf("\n经过排序后这六个数字依次是:\n");    sort (a,6);    for ( i=0; i <6; i++){        printf("%d\t",a[i]);    }    return 0;}


[解决办法]
sort
C/C++ code
if (p[b]>p[b+1])            {                temp = p[b];                p[b] = p[b+1];                p[b+1] = temp;            }
[解决办法]
同学 if 语句内 因该用b 来作为索引吧? 你填错了
for ( b=0; b<len-1-a; ++b)
{
if (p[a]>p[a+1])
{
temp = p[a];
p[a] = p[a+1];
p[a+1] = temp;
}
}

[解决办法]
C/C++ code
#include <stdio.h>void sort( int * p, int len);void sort( int * p, int len){    int a, b, temp = 0;    for ( a=0; a<len-1; ++a)    {        for ( b=0; b<len-1-a; ++b)        {            if (p[b]>p[b+1])            {                temp = p[b];                p[b] = p[b+1];                p[b+1] = temp;            }        }    }}int main(void){    int a[6];    int i;    printf("请输入六个整数\n");    for ( i=0; i <6; i++){        scanf("%d",&a[i]);    }        printf("这六个数字依次是:\n");    for ( i=0; i <6; i++){        printf("%d\t",a[i]);    }    printf("\n经过排序后这六个数字依次是:\n");    sort (a,6);    for ( i=0; i <6; i++){        printf("%d\t",a[i]);    }    return 0;} 

热点排行