黑马程序员技术交流社区
标题: 冒泡法排序的问题 [打印本页]
作者: 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)
作者: 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 |