黑马程序员技术交流社区

标题: 冒泡法排序的问题 [打印本页]

作者: PlatoTu    时间: 2015-11-5 22:54
标题: 冒泡法排序的问题
//需求:运用冒泡法对一位数组进行由小到大排序,并打印输出

#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

作者: PlatoTu    时间: 2015-11-5 22:55
//需求:运用冒泡法对一位数组进行由小到大排序,并打印输出

#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;

}
作者: peide0427    时间: 2015-11-5 23:05
不知道!!!!!
作者: 银河雨    时间: 2015-11-6 20:29
如1楼所示,就如你的那个if语句的注释一样,明明写的是挨着的两个数比较,你的那个表示的是第一个和相应的的数比较,可定有问题了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2