我就是搞不懂啊!例如:排序35298这五个数,升序排列!
网友回答
起泡法啊,我们是这么叫的.这个首先你了解基本思路,就是35比,谁大谁放后面,然后在把35中大的与2比,以此类推,第一轮就把9(最大)放最后了.第一轮一共比了5-N(N=1)=4次.剩下几轮一样.一共5-1=4轮.
看程序的时候分清几个循环都干什么用的,分出嵌套的层次.应该就差不多了.
======以下答案可供参考======
供参考答案1:
/*2. 源程序*/
/***bubble.c***/
#include
# include
#define N 8 /*定义排序数据为8个*/
void Init(int a[]);/*初始状态*/
void Close(void);/*图形模式结束*/
void Pr(int a[],int n);/*输出数组*/
void DrawChange(int i,int j);/*画交换箭头*/
void Bubble_sort(int a[],int n);/*冒泡排序*/
void main(void)
{ int i,a[N];
printf(Please enter 8 int number\n); /*输入8个整数*/
for(i=0;i scanf(%d,&a[i]);
Init(a);/*初始状态*/
Bubble_sort(a,8);/*具体排序*/
Close();/*图形模式结束*/
exit(0);
}void Init(int a[])/*初始状态*/
{ int gd=DETECT,gm,i;
initgraph(&gd,&gm,);/*初始化图形系统*/
cleardevice(); /*清屏*/
setcolor(YELLOW); /*设置颜色*/
outtextxy(210,10,any key to continue); /*显示压任意键继续*/
Pr(a,40);/*第一次输出数组*/
getch(); /*等待压任意键*/
}void Close (void) /*图形模式结束*/
{ getch(); /*等待压任意键*/
closegraph(); /*关闭图形模式*/
}void Pr(int a[],int n)/*输出数组*/
{ int i; char num[5];
settextstyle(0,0,2); /*设置输出样式*/
setcolor(GREEN); /*设置输出颜色*/
for(i=100;i { sprintf(num,%d,a[(i-100)/50]); /*将数值转化为字符串*/
outtextxy(i,n,num); /*输出字符串*/
}}void DrawChange(int i,int j)/*画交换箭头,画五根线组成一双向箭头线*/
{ setcolor(6);
line(j*50+120,i+8,j*50+140,i+8); /*按给出的坐标位置画直线*/
line(j*50+120,i+8,j*50+120+5,i+4); line(j*50+120,i+