FITURE

If you can fight, fight.

首页 >> 分享>>冒泡排序算法

冒泡排序算法

Posted by fiture / 2011年05月06日 / 分享

所谓冒泡排序,是指计算机语言的一种排序方法。由于其排序原理类似于冒泡的现象故称之为冒泡排序。具体方法是指由第一个元素开始,比较相邻元素的大小,若大小顺序有误,则对调两个元素的位置之后继续与下一个相邻元素比较……如此循环比较下去,直到所有元素排序完成。

冒泡排序算法的基本思想:

通过依次对相邻的两个数据进行比较交换,使一个符合要求的数据被放到数列最后,成为已经排好序的数列的一个数据; 在对没有排好序的数列进行两两比较交换,使又一个数据成为已经排好序的数列的一个数据; …… 直到比较交换最后的两个数据为止。

冒泡排序算法的示意图:

冒泡排序-对5个数据进行冒泡排序的过程

冒泡排序算法的程序实现:

一般冒泡排序使用的是双重循环实现该算法,具体的做法是设想被排序的数组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;

}

一条回应:“冒泡排序算法”

  1. 这个在学校教过。忘了都

发表评论

电子邮件地址不会被公开。 必填项已用*标注