前辈们帮忙解释一下这个冒泡排序的每个语句的意思(标注在每句后面就行,谢谢啦)

voidmainprbub(p,n)intn;doublep[];{intm,k,j,i;doubled;k=0;m=n-1;while(k<m){j=m-1;m=0;f... void main prbub(p,n)
int n;double p[];
{int m,k,j,i;
double d;
k=0;m=n-1;
while (k<m)
{j=m-1;m=0;
for(i=k;i<=j;i++)
if(p[i]>p[i+1])
{d=p[i];p[i]=p[i+1];p[i+1]=d;m=i;}
j=k+1;k=0;
for(i=m;i>=j;j--)
if(p[i-1]>p[i])
{d=p[i];p[i]=p[i+1];p[i+1]=d;k=i;}
}
return;
}
三楼的哥们,你解释的我本来就明白,关键是我不大明白前面几句……
k=0;m=n-1;
while (k<m)
{j=m-1;m=0;
……
j=k+1;k=0;
……
三楼的哥们啊,我是说能不能在这几句我不懂的语句后面注一下是表示什么意思,为什么要这么写程序语句。谢谢哈
展开
 我来答
theprogrammer
2011-01-30 · TA获得超过1650个赞
知道小有建树答主
回答量:1127
采纳率:0%
帮助的人:511万
展开全部
意料之中。单看程序,不实际跑几遍是很难完全理解的。

void main prbub(p,n)
int n;double p[];
{int m,k,j,i;
double d;
k=0;m=n-1;
while (k<m)
{j=m-1;m=0;
for(i=k;i<=j;i++) //从k开始,直到最后
if(p[i]>p[i+1]) //如果顺序不对
{d=p[i];p[i]=p[i+1];p[i+1]=d;m=i;} //两个数字对换位置
j=k+1;k=0; //设初值
for(i=m;i>=j;j--) //从m开始往前,直到j
if(p[i-1]>p[i]) //如果顺序不对
{d=p[i];p[i]=p[i+1];p[i+1]=d;k=i;} //两个数字对换位置
}
return;
}

1、排序方法
将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。
(1)初始
R[1..n]为无序区。

(2)第一趟扫描
从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key<R[j].key,则交换R[j+1]和R[j]的内容。
第一趟扫描完毕时,"最轻"的气泡就飘浮到该区间的顶部,即关键字最小的记录被放在最高位置R[1]上。

(3)第二趟扫描
扫描R[2..n]。扫描完毕时,"次轻"的气泡飘浮到R[2]的位置上……
最后,经过n-1 趟扫描可得到有序区R[1..n]
注意:
第i趟扫描时,R[1..i-1]和R[i..n]分别为当前的有序区和无序区。扫描仍是从无序区底部向上直至该区顶部。扫描完毕时,该区中最轻气泡飘浮到顶部位置R上,结果是R[1..i]变为新的有序区。

参考资料: http://zhidao.baidu.com/question/104661136.html?si=2

百度网友b19e03d
2011-01-30
知道答主
回答量:26
采纳率:0%
帮助的人:19.8万
展开全部
不知道你懂冒泡不?所谓的冒泡比如有
5 3 1 4 2 这5个数 想让它们升序排列 可以使用俩俩比较法也就是所谓的冒泡排序法 让 每2个数进行比较 第一个数大于第二个数 就交换他们的位置 直到循环到 最后一个数 就完成了升序排序
比如:5 3 1 4 2
3 1 4 2 5 第一次比较 用5先和3比较 如果5比3大 就交换它们的位置 然后再让5和1比较如果5比1大就在交换 直到比完最后一个数之后 就可以排出 最大数 然后第二次循环排出第二大的数........ 循环4次就 可以完成排序 循环的次数是 n-1次 n是多少个数
双手码字 我自豪!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1c5199b
2011-01-29
知道答主
回答量:42
采纳率:0%
帮助的人:11万
展开全部
我也初学。这个的确难懂。不过多看几遍应该就能看懂了。真的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式