关于c++中的冒泡法

来源:百度知道 编辑:UC知道 时间:2024/05/24 10:32:02
各位大哥能否跟我说说原理 我看了半天书 实在是不懂啊

我给你说介绍一下吧
比如五个数,用起泡法从小到大排序.
先用第一个数与第二个数比较,把大的数,放在第二个位置,
然后用第二个与第三个数比较,把大的数放在第三个位置,
然后用第三个数和第四个数比较,把大的数放在第四个位置,
然后用第四个数和第五个数比较,把大的数放在第五个位置,
这样,就把五个数中最大的数放在第五个位置了,
同理,把第二大的放在第四个位置,
把第三大的放在第三个位置,
第四大的放在第四个位置,
就排好了!
顺便给你介绍一下选择排序法,你可以二个对比一下,加深记忆.
也以五个数从小到大排序为例:
先用第一个数与第二个数比,小的放在第一个位置,
然后用第一个数与第三个数比,小的放在第一个位置,
用第一个数与第四个数比,小的放在第一个位置,
用第一个数与第五个数比,小的放在第一个位置.
这样,最小的数放在第一个位置,
同理,用第二个数与后面的比,将第二小的放在第二个位置,
第三小的放在第三个位置,
第四小的放在第四个位置.完成了,以下,我学C语言的时候写的代码,是十个数比的,C的代码在C++上也能运行,你只要看一下循环的部分,加深一下理解就成了:代码如下:
选择法:
#include "stdio.h"
main()
{
int a[11];
int i,j,k,n;
for (i=1;i<11;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
for(j=i+1;j<=10;j++)
{
(a[i]>a[j])?(a[0]=a[i],a[i]=a[j],a[j]=a[0]):(a[0]=0);
}
for(i=1;i<11;i++)
printf("%5d",a[i]);
}

起泡法:
#include &q