冒泡排序详解

in 那美克星

冒泡排序概念:
在排序过程中小数往前放,大数往后移,就像冒泡一样,所以取名“冒泡排序”,有的地方也叫“起泡排序”。
算法原理(From:百度百科):

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

贴上一张原理图:

贴上代码,注释已经说明白了:

//冒泡排序算法实现
#include <stdio.h>

void main()
{
    int a[5];                //定义元素为5的数组
    int i,j;                //控制循环
    int t;                    //中间变量

    for (i = 0;i < 5;i++)    //**
    {                //**
        scanf(" %d",&a[i]);    //**为即将排序的数组读取数据
    }                //**
    for (i = 0;i < 4;i++)        //---
    {                //---
        for (j = 0;j < 5-i;j++) 
        {                    
            if (a[j] > a[j+1])    
            {                    
                t = a[j+1];//---排序过程,数据交换
                a[j+1] = a[j];    
                a[j] = t;
            }
        }            //---
    }                //---
    puts("排序后的书序为:");
    for (i = 0;i < 5;i++)
    {
        printf("%d\n",a[i]);    //输出数据
    }
}
Responses