永发信息网

c++冒泡排序法

答案:4  悬赏:70  手机版
解决时间 2021-01-28 15:12
c++冒泡排序法
最佳答案
const int SIZE=(sizeof(a)/sizeof(a[0]));这句是对的,错的是你的排序体
这里a[]有10个元素,即SIZE=10;
首先说一下冒泡排序法的思想:设为降序排序a[0]>a[1]>.....
1.a[]是一个无序的序列。如果a[]是已经降序排序好的,我们也设为无序,即
它作为一个序列参数,人可以看出他是有序的,但程序把它作为参数,要
经过冒泡排序,程序才能认为得到的结果序列是一个有序的序列。
2.选出序列中第一大元素作为a[0]:
3.原序列分为两个子序列:a[0]子序列有序,a[1]...a[n]无序
4.在无序的子序列a[1]...a[n]中选出最大元素作为a[1],将a[1]加入有序子
序列中,形成a[0]>a[1]
5.重复2 3 4

你的程序中排序部分有问题:
for(int i=0;i for(int j=0;j if(a[j]>a[j+1]) //这个比较条件有问题,设i=0,j=1,a[j]与a[j+1]的
//大小关系与a[i]有什么关系呢
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
////////////改为///////////////////////
for(int i=0;i for(int j=i+1;j if(a[j]>a[i])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
但是这种比较太频繁,开销太大

这是我个人自己写的哟,请给我分啊
///////////////////////
for(int i=SIZE-1;i>0;i--)
for(int j=0;j if(a[j]>a[j+1])
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;

}
说一下楼上的,j++一次就定义一次int t;又删除一次t,开销大得很
全部回答
SIZE不对,你调试一下,应该是sizeof(a)和你希望得到的值不一样
问题出在这
if(a[j]>a[j+1])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
应改为:
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
另外还有一处问题:for(int j=0;j if(a[j]>a[j+1])
当i=0时,j=SIZE-1时,a[j]>a[j+1],此时j+1=SIZE,数组访问越界了!!!
所以应改为:for(int j=0;j运行结果:
86 123 213 234 344 423 432 567 568 987
Press any key to continue
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有一本关于主角得到三国杀里人物的技能的小说
万城联通怎么去啊,我要去那办事
柯达冲印店(上大路店)地址在什么地方,想过去
中国移动横栏飞逸通讯合作点地址有知道的么?
田园数码彩扩社地址在哪,我要去那里办事
股份合作经济的特征有()。A.以劳动联合为主,
棵把的意思是什么啊?知道的请说下!
胃出血死亡算不算意外死亡??
求音频怪物配过的广播剧
稔益供水客户服务厅怎么去啊,我要去那办事
根据所学知识,请分别举出例子说明法律的规范
关于细胞生命历程的叙述,正确的是(  )A
我国耕地分布不均、人均量少。回答下列各题。
挫折测试
升艺广告设计制作怎么去啊,我要去那办事
推荐资讯
恒顺健物流园怎么去啊,我要去那办事
韩国印季STUDIO(北京店)地址好找么,我有些事
棋路的意思是什么啊?知道的请说下!
金石广场地址在什么地方,想过去办事
黄韲的意思是什么啊?知道的请说下!
1982正月初8早上9点到10左右属狗的姓李起名字
阅读下列图和材料,回答有关问题(15分)。材料
一个人站在一辆匀速行驶的公车上,请问人对公
龙结新艺数码婚纱摄影地址好找么,我有些事要
学术界一般认为,日本“明治维新”是一次资产
全球邮政特快专递(504乡道)地址在哪,我要去
【好段摘抄及赏析】好句好段摘抄加赏析
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?