前辈们帮忙解释一下这个冒泡排序的每个语句的意思(标注在每句后面就行,void main prbub(p,n)int n;double p[];{int m,k,j,i;double d;k=0;m=n-1;while (k=j;j--)if(p[i-1]>p[i]){d=p[i];p[i]=p[i+1];p[i+1]=d;k=i;}}return;}三楼
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/27 14:41:27
前辈们帮忙解释一下这个冒泡排序的每个语句的意思(标注在每句后面就行,void main prbub(p,n)int n;double p[];{int m,k,j,i;double d;k=0;m=n-1;while (k=j;j--)if(p[i-1]>p[i]){d=p[i];p[i]=p[i+1];p[i+1]=d;k=i;}}return;}三楼
前辈们帮忙解释一下这个冒泡排序的每个语句的意思(标注在每句后面就行,
void main prbub(p,n)
int n;double p[];
{int m,k,j,i;
double d;
k=0;m=n-1;
while (k=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
前辈们帮忙解释一下这个冒泡排序的每个语句的意思(标注在每句后面就行,void main prbub(p,n)int n;double p[];{int m,k,j,i;double d;k=0;m=n-1;while (k=j;j--)if(p[i-1]>p[i]){d=p[i];p[i]=p[i+1];p[i+1]=d;k=i;}}return;}三楼
意料之中.单看程序,不实际跑几遍是很难完全理解的.
void main prbub(p,n)
int n;double p[];
{int m,k,j,i;
double d;
k=0;m=n-1;
while (k=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