- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
整数冒泡排序(网页显示不完整请下载后查看).xls
Sheet3
Sheet2
Sheet1
无序数列
// p整型数组的指针,指示待排序序列的起始位置
// n待排序序列的长度
int maopao(int p[],int n)
{
int m,k,j,i,d;
k = 0;
m = n - 1;
while(km)
{
j = m - 1;
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;
for(i=m;i=j;i--)
if(p[i-1]p[i])
{
d = p[i];
p[i] = p[i-1];
p[i-1] = d;
k = i;
}
}
return 1;
}
第一趟冒泡
1.比较[0]和[1]交换
2.比较[1]和[2]交换
3.比较[2]和[3]
无交换
4.比较[3]和[4]
交换
5.比较[4]和[5]
6.比较[5]和[6]
7.比较[6]和[7]
第一趟冒泡结束,
其结果:将最大者排在最右边
第二趟冒泡
1.比较[6]和[5]
2.比较[5]和[4]
3.比较[4]和[3]
4.比较[3]和[2]
5.比较[2]和[1]
6.比较[1]和[0]
第二趟冒泡结束,
其结果:将最小者排在最左边
第三趟冒泡
1.比较[1]和[2]
2.比较[2]和[3]
3.比较[3]和[4]
4.比较[4]和[5]
5.比较[5]和[6]
第三趟冒泡结束,
其结果:将数31正确排序
第四趟冒泡(从右往左)
1.比较[5]和[4]
2.比较[4]和[3]
3.比较[3]和[2]
4.比较[2]和[1]
第四趟冒泡结束,
其结果:将数11正确排序
第五趟冒泡(从左往右)
1.比较[2]和[3]
2.比较[3]和[4]
3.比较[4]和[5]
第五趟冒泡结束,
其结果:将数30正确排序
第六趟冒泡(从右往左)
1.比较[4]和[3]
2.比较[3]和[2]
第六趟冒泡结束,
其结果:将数12正确排序
第七趟冒泡(从左往右)
1.比较[3]和[4]
第七趟冒泡结束,
其结果:将数21和24正确排序
(若为9个数)
第七趟冒泡(从左往右)
1.比较[3]和[3.5]
无交换
2.比较[3.5]和[4]
第七趟冒泡结束
其结果:确定24的位置
第八趟冒泡(从右往左)
1.比较[3]和[3.5]
2.比较[3]和[3]
下标相等,结束比较
已排序序列
一共8个数, n=8
初始化: k=0(始终为每趟冒泡的最左边界); m=n-1=7(始终为每趟冒泡的最右边界)
k 和 m 下标的数均未排序
每趟冒泡前提满足 km, 即当 k=m 时排序已完成
i 用于循环 j 用于表示循环终止条件
第一趟冒泡(从左往右)
从左往右:最左边界为 k (由上一趟排序确定)
最右边界为 m (m为上一趟的右边界)
循环终止条件为 i=k;i=(j=m-1);i++; k值保持不变
比较[i]和[i+1]的大小
if [i][i+1] 则 m=i(确定下趟排序的右边界)
比较次数
m=1
m=3
m=6
第一趟冒泡结束,
其结果:将最大者排在最右边
k=0 m=6
第二趟冒泡(从右往左)
从右往左: 左边界为 k (k为上一趟的左边界)
右边界为 m=6 (由上一趟排序确定)
循环终止条件 i=m ;i=(j=k+1);i-- m 值不变
一次比较[i]和[i-1]的大小
若[i-1][i],则 k=i 作为下一趟排序的最左边界
比较次数
k=5
第二趟冒泡结束,
其结果:将最小者排在最左边
k=5 ,m=6
第三趟冒泡(从左往右) k值保持不变
左边界 k =5
右边界 m =6
循环条件 i=k;i=j=m-1=5 ;i++ 比较[i]和[i+1]
左
右
1.比较[5]和[6]
文档评论(0)