A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© PlatoTu 中级黑马   /  2015-11-5 22:54  /  1382 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//需求:运用冒泡法对一位数组进行由小到大排序,并打印输出

#include <stdio.h>
int main(){
    int arr[]={8,2,4,3,1,5};
    for (int a=0; a<6; a++) {
        int i=0;
        for (int b=0; b<6-a; b++) {

            if (arr>arr[b+1]) { //比较数组相邻两个数的大小,若左边大于右边,那么将两个数交换
                 i=arr;
                arr=arr[b+1];
                arr[b+1]=i;
            }
        }
        for (int c=0; c<6; c++) {
            printf("%d\t",arr[c]);
        }
        printf("\n");
    }
    return 0;

}
这个程序在多次运行的时候会出现最大值8遍为负值的情况,但有时又不会变化,结果正常,求原因

屏幕快照 2015-11-05 下午10.48.22.png (82.83 KB, 下载次数: 26)

屏幕快照 2015-11-05 下午10.48.22.png

3 个回复

倒序浏览
//需求:运用冒泡法对一位数组进行由小到大排序,并打印输出

#include <stdio.h>
int main(){
    int arr[]={8,2,4,3,1,5};
    for (int a=0; a<6; a++) {
        int i=0;
        for (int b=0; b<6-a; b++) {
         
            if (arr[b]>arr[b+1]) { //比较数组相邻两个数的大小,若左边大于右边,那么将两个数交换
                 i=arr[b];
                arr[b]=arr[b+1];
                arr[b+1]=i;
            }
        }
        for (int c=0; c<6; c++) {
            printf("%d\t",arr[c]);
        }
        printf("\n");
    }
    return 0;

}
回复 使用道具 举报
不知道!!!!!
回复 使用道具 举报
如1楼所示,就如你的那个if语句的注释一样,明明写的是挨着的两个数比较,你的那个表示的是第一个和相应的的数比较,可定有问题了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马