载入中
自定义HTML载入中... loading
对一维数组排序的两种方法之一 冒泡排序 [原创 2008-02-06 14:38:29]  删除... 
字体变小 字体变大

        冒泡排序的基本原理:设想被排序的数组R[0—n-1]竖直排列,每个元素R[i]作重量为R[i]的气球,根据轻气球不能在重气球下面的原则,从下往上扫描数组R,凡是扫描到违反本规则的数组元素,则使其交换。循环进行,直到该数组中任意两个元素都是轻的在上,重的在下面为止。

实例程序:

#include<stdio.h>

#define N 9

main()

{

int R[N]={3,9,6,4,7,1,2,8,5};

 int i,j,temp,exchange;

 printf("排序前:");

 for (i=0;i<9;i++) printf("%d",R[i]);

 printf("\n");

 for (i=0;i<N;i++)

      {

         exchange=0;

          for (j=N-2;j=i;j--)

          {

           if (R[j+1]<R[j])

                {

                 temp=R[j+1];R[j+1]=R[j];R[j]=temp;

                 }

           }

            exchange=1;

          if (!exchange) break;

}

printf ("排序后:);

for (i=0;i<N;i++) printf("%d",R[i]);

printf("\n");

}

过程分析:初始序列:3,9,6,4,7,1,2,8,5

i=0,j取7--0;j=7:比较R[7] 和R[8],8>5,所以交换,数列为3,9,6,4,7,1,2,5,8;

j=6:比较R[6]和R[7],2<5,不交换;

j=5:比较R[5]和R[6],1<2,不交换

j=4:比较R[4]和R[5],7>1,交换,序列为3,9,6,4,1,7,2,5,8;

j=3:比较R[3]和R[4],4>1,交换,序列为3,9,6,1,4,7,2,5,8;

j=2:比较R[2]和R[3],6>1,交换,序列为3,9,1,6,4,7,2,5,8;

j=1:比较R[1]和R[2],9>1,交换,序列为3,1,9,6,4,7,2,5,8;

j=0:比较R[0]和R[1],3>1,交换,序列为1,3,9,6,4,7,2,5,8;

当i取其他值时,原理相同。

 

分类: 学习天地
票数:
什么是“我顶”?
点击数:    评论数:
本文章引用通告地址(TrackBack Ping URL)为:
本文章尚未被引用。
发表评论
大 名:
(不填写则显示为匿名者)
网 址:
(您的网址,可以不填)
标 题:
内 容:
请根据下图中的字符输入验证码:
(您的评论将有可能审核后才能发表)
和讯个人门户 v1.0 | 和讯部落 | 客服中心