作者jay0529 (阿杰)
看板C_and_CPP
标题[问题] 请问关於气泡排序法的一点小问题
时间Mon May 11 22:02:48 2009
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
int main(void){
int a[100];
int i;
int j;
int tmp;
srand(time(NULL));
for(i=0;i<=99;i++){
}
for(i=0;i<=99;i++){
a[i]=rand();
}
for(i=0;i<=99;i++){
for(j=99;j>=i;j--){
if(a[j]>=a[j+1]){ //由小排到大
tmp=a[j]; //
a[j]=a[j+1]; //
a[j+1]=tmp; //
} //
/**** if(a[j]<=a[j+1]){
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
} ****/
}
printf("%10d",a[i]);
}
printf("\n");
return 0;
}
上述这段程式码是用随机乱数跑一百个数再用气泡排序法排列完成
其中19~23行(我用"//"mark起来那部分)是要由小排到大
而24行~28行(我用/**** ****/mark起来那部分)我的用意是让他由大排到小 虽然可以跑
的出来但却会出现
c.exe发生问题,必须关闭,仅此致歉的视窗
请问是什麽原因呢 如果问题太笨 请见谅 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.77.79.134
1F:→ leslieha:if(a[j]>=a[j+1]), a[j]=a[j+1], 当j=99会怎样? a有多大? 05/11 22:16