冒泡排序算法
所谓冒泡排序,是指计算机语言的一种排序方法。由于其排序原理类似于冒泡的现象故称之为冒泡排序。具体方法是指由第一个元素开始,比较相邻元素的大小,若大小顺序有误,则对调两个元素的位置之后继续与下一个相邻元素比较……如此循环比较下去,直到所有元素排序完成。
冒泡排序算法的基本思想:
通过依次对相邻的两个数据进行比较交换,使一个符合要求的数据被放到数列最后,成为已经排好序的数列的一个数据; 在对没有排好序的数列进行两两比较交换,使又一个数据成为已经排好序的数列的一个数据; …… 直到比较交换最后的两个数据为止。
冒泡排序算法的示意图:
冒泡排序算法的程序实现:
一般冒泡排序使用的是双重循环实现该算法,具体的做法是设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。
C/C++参考代码:
/****** 冒泡排序 ******/
#include <stdio.h>
#define N 8
int main ( )
{
int a[N]={9,8,3,7,5,2,6,1};
int i,j,temp;
/* 冒泡排序 */
for(j=0;j<N;j++) /* N-1轮比较交换 */
{
for(i=0;i<N-i;i++)
if (a[i]>a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}
}
/* 输出结果 */
printf("\n排序结果:");
for(i=0;i<=N-1;i++)
printf("%3d", a[i]);
printf("\n");
return 0;
}
这个在学校教过。忘了都