冒泡排序和选择排序有什么区别,具体一些谢谢啦

 我来答
爱生活的翟先森
2012-11-11 · TA获得超过163个赞
知道答主
回答量:50
采纳率:0%
帮助的人:36.5万
展开全部
找排序的区别,一定要动手(用笔,不是电脑)去执行代码,不用问你也可以看出代码怎么排的,而且你自己对这问题的理解也更加深刻,问人的话说不定哪天你又忘了,说不定还把两种给搞反了。我下面手写给你解释一下代码,你动手去画一下。
为了方便思考,数组零位置我没用
选择排序(从小到大,每次将a[i]到a[n]中最小的值找到,并放到a[i]处)
for(i=1;i<=n;i++) //a[i[是我们当前要确定的数,这样的数有n个(即数组长度)
{
k=i; //k用来待会记录较小的数的位置
for(j=i+1;j<=n;j++) //将a[i]依次与后面的数比较,最后把最小的数交换到a[i]

{
if(a[j]<a[k])
k=j;
}

temp=a[k]; //k存的就是最终最小的数的位置,把最小的数交换到a[i]

a[k]=a[i];

a[i]=temp;

}

冒泡排序(顺着两两比较,最终最大的数被比较的最后位置,最终达到从小到大顺序)
for(i=1;i<n;i++) //这里n为比较次数,n个数,比较n-1次,最后一个数自然是最小的
for(j=1;j<=n-i+1;j++) //每次比较,后面比较好的数就不用再比较了

//n-i+1怎么来的?当i=1时,第一次比较肯定包括a[n],用这个特殊情况来写。
{
if(a[j]>a[j+1])
{
temp=a[j]; //把相邻两个数据比较出的较大的值换到后面
a[j]=a[j+1];
a[j+1]=a[j]
}
}
代码为手写,可能有错误,但大致思想就是这样,希望能帮到你。
shangke7788
2012-11-11 · 超过13用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:29.5万
展开全部
冒泡排序采取从左到右相邻两个比较交换,可以计算出逆序数。
选择排序则是改值依次与后面的进行比较交换。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛婉丛子舒
2020-06-30 · TA获得超过4286个赞
知道小有建树答主
回答量:3170
采纳率:24%
帮助的人:456万
展开全部
找排序的区别,一定要动手(用笔,不是电脑)去执行代码,不用问你也可以看出代码怎么排的,而且你自己对这问题的理解也更加深刻,问人的话说不定哪天你又忘了,说不定还把两种给搞反了。我下面手写给你解释一下代码,你动手去画一下。
为了方便思考,数组零位置我没用
选择排序(从小到大,每次将a[i]到a[n]中最小的值找到,并放到a[i]处)
for(i=1;i<=n;i++)
//a[i[是我们当前要确定的数,这样的数有n个(即数组长度)
{
k=i;
//k用来待会记录较小的数的位置
for(j=i+1;j<=n;j++)
//将a[i]依次与后面的数比较,最后把最小的数交换到a[i]
{
if(a[j]<a[k])
k=j;
}
temp=a[k];
//k存的就是最终最小的数的位置,把最小的数交换到a[i]
a[k]=a[i];
a[i]=temp;
}
冒泡排序(顺着两两比较,最终最大的数被比较的最后位置,最终达到从小到大顺序)
for(i=1;i<n;i++)
//这里n为比较次数,n个数,比较n-1次,最后一个数自然是最小的
for(j=1;j<=n-i+1;j++)
//每次比较,后面比较好的数就不用再比较了
//n-i+1怎么来的?当i=1时,第一次比较肯定包括a[n],用这个特殊情况来写。
{
if(a[j]>a[j+1])
{
temp=a[j];
//把相邻两个数据比较出的较大的值换到后面
a[j]=a[j+1];
a[j+1]=a[j]
}
}
代码为手写,可能有错误,但大致思想就是这样,希望能帮到你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式