求关于c语言 冒泡排序法的讲解

如题所述

冒泡排序法是简单的排序方法之一,它和气泡从水中往上冒的情况有
些类似。其具体做法是

(1)对于数组a中的1至n个数据,先将第n个和第n-1个数据进行比较,如果
a(n)<a(n-1),则两个数交换位置。

然后比较第n-1个和第n-2个数据;依次类推,直到第2个数据和第1个数据
进行比较交换,这称为一趟冒泡。这一趟最明显的效果是:将最小的数据传到了
第1位。

由此还可推断出,对于n个数,一趟应该进行n-1 次比较操作。算法流程如
下图所示:

(2)然后,对2至n个数据进行同样操作,则具有次小值的数据被安置在第2位
上。

(3)重复以上过程,每次的移动都向最终排序的目标前进,直至没有数据需要交换为止。

这种排序的方法被形象地比喻成“冒泡”,在排序过程中,小的数就如气泡一般逐层上冒,而大的数逐个下沉。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-02-18
水中的气泡,小的气泡在下面,大的在上面,小的气泡合成大的气泡后才浮出水面,冒泡法(起泡法)因此得名。
冒泡法的基本思想为:将一系列数从左至右,相邻比较小的放到前面,大的在后,一轮下来,最大的数在最后(不进行第二轮比较),第二轮又从第一个数开始从左至右,相邻比较,小的在前大的在后,如此往复,得到一个由小到大的系列。
算法如下:
1. 输入N个数给a[1],a[2],...,a[n];
2. for i=1 to n-1;
3. for j=1 to n-i(大数不进行下一轮比较);
4. 判断a[j]>[j+1] ? 如果是,交换a[j]和a[j+1];
5. 输出a[1]到a[n].
第2个回答  2008-02-19
int ch[N+1];
for(int i=0;i<N;i++)
//第一次循环找出最小的;第2次循环找出第2小的,直至找到最大的
{for(int j=i+1;j<N;j++)
{if(ch[i]>ch[j])
{ch[N]=ch[i],ch[i]=ch[j],ch[j]=ch[N];}
}}
第3个回答  2008-02-21
深刻理解一下
相似回答