数据结构排序

给定待排关键字集合为{23,14,48,25,5,19},按关键字非递减(从小到大)排序,写出采用冒泡排序的每一趟(最外层循环的每一次)排序结果。求解题过程。。。。... 给定待排关键字集合为{23,14,48,25,5,19},按关键字非递减(从小到大)排序,写出采用冒泡排序的每一趟(最外层循环的每一次)排序结果。
求解题过程。。。。
展开
 我来答
甘雅青2
2011-02-27 · TA获得超过1723个赞
知道小有建树答主
回答量:450
采纳率:100%
帮助的人:622万
展开全部
冒泡排序基本过程,从首元素开始,每次两两比较,前面的比后面的小,则位置不变,否则交换位置,每一趟比较,都能得到待排子序列中的最大值,就像小的值冒上去,大的值沉下来

第一趟排序:待排序列 【23,14,48,25,5,19】
(14 23 ) 48 25 5 19 :23与14交换
14 (23 48) 25 5 19 :23与48不交换
14 23 (25 48) 5 19 :25 与48交换
14 23 25(5 48) 19
14 23 25 5(19 48)
所以第一趟排序的结果:【14 23 25 5 19】 48 :这个序列的最大值48就到最后了

第二趟排序:待排序列 【14 23 25 5 19】 48,只排方括号里的就行了
第二次排序后的结果: 【14 23 5 19】 25 48,次大的25排出来了

第三次排序后的结果: 【14 5 19】 23 25 48,再次大的23排出来了

第四次排序后的结果: 【5 14】 19 23 25 48

第五次排序后的结果: 5 14 19 23 25 48 ,这个也是最终排序结果
Monkey家园
2011-02-28 · TA获得超过5635个赞
知道大有可为答主
回答量:1134
采纳率:60%
帮助的人:615万
展开全部
初始:{23,14,48,25,5,19}
第一趟:{14,23,25,5,19,48},
第二趟:{14,23,5,19,25,48},
第三趟:{14,5,19,23,25,48},
第四趟:{5,14,19,23,25,48},
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
4j4588
2011-02-24 · TA获得超过736个赞
知道小有建树答主
回答量:777
采纳率:0%
帮助的人:587万
展开全部
这个问题简单,楼主的意思就是显示每一步执行后的中间结果,那只要加几个输出语句就可以了,过程很简单的,为简化起见用最常用的选择排序。程序在wn-tc和Dev-c++下调试通过。
#include<stdio.h>
#include<conio.h>
#define MAX 50
main()
{
int i,j,k,n,a[MAX],b[MAX];
printf("Please input the number of digits:");
scanf("%d",&n);
printf("Please input the digits one by one:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("The array input are:\n");
for(i=0;i<n;i++)
{printf("%4d",a[i]); b[i]=a[i];}/* b[]是a[]的副本,保存原始a[]的内容 */
printf("\n\n");
printf("The sequence in turn are:\n");
for(i=0;i<n-1;i++) /* 选择排序,从小到大排序 */
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{a[i]=a[i]+a[j];
a[j]=a[i]-a[j];
a[i]=a[i]-a[j];
for(k=0;k<n;k++)
printf("%4d",a[k]);
printf("\n");
}
printf("The array after sort are:\n");
for(i=0;i<n;i++)
printf("%4d",a[i]);

/* 以下是反向排序方法相同 */
printf("\n\n\n");
printf("The sequence in turn are:\n");
for(i=0;i<n-1;i++) /* 选择排序,从大到小排序 */
for(j=i+1;j<n;j++)
if(b[i]<b[j])
{b[i]=b[i]+b[j];
b[j]=b[i]-b[j];
b[i]=b[i]-b[j];
for(k=0;k<n;k++)
printf("%4d",b[k]);
printf("\n");
}
printf("The array after sort are:\n");
for(i=0;i<n;i++)
printf("%4d",b[i]);
getch();
}

参考资料: 百度一下

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式