Chinaunix首页 | 论坛 | 博客
  • 博客访问: 102780
  • 博文数量: 23
  • 博客积分: 555
  • 博客等级: 中士
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-14 11:04
文章分类

全部博文(23)

文章存档

2012年(23)

我的朋友

分类: C/C++

2012-05-10 23:39:01

冒泡排序:
①需要“冒泡”的形式来排序,大气泡向后去|小气泡向前来。
②冒泡,比较(交换)相邻的元素。
③总共冒N次泡
④已有序的数目等于冒泡的数

一个标识:(注意一下)
冒泡排序的内循环for的j的条件测试是外循环i相关的。

下标越界的避免:
需要比较相邻的元素,因此j与j+1注意越界的避免。

源码:
  1. void swap(int *a, int *b)
  2. {
  3.     int *temp;
  4.     *temp = *a;
  5.     *a = *b;
  6.     *b = *temp;
  7. }

  8. // note: compare the two number who are adjacent.
  9. void bubble_sort(int a[], int n)
  10. {
  11.     for(int i = 0; i < n; i++)
  12.     {
  13.         // compare a[j]&a[j+1], so j must be less than n-1.
  14.         // n-1-i means some numbers at the end of the array are sorted.
  15.         for(int j = 0; j < (n-1)-i; j++)
  16.         {
  17.             // the bigger number is bubbled to right side.
  18.             if(a[j] > a[j+1])
  19.             {
  20.                 swap(a[j], a[j+1]);
  21.             }
  22.         }

  23.         output(a, n);
  24.     }
  25. }

阅读(1778) | 评论(4) | 转发(2) |
0

上一篇:排序——选择排序

下一篇:SQL——第一步

给主人留下些什么吧!~~

xbbHistory2012-09-14 19:41:19

EnjoyKernel: 感谢你的回复。我又试了一下,应该是可以的。
哪里有问题呢?.....

swap(a[j], a[j+1]);
这个根本就是错的,你函数形参是int指针类型,你调用的时候传的是值类型。

EnjoyKernel2012-06-08 20:47:27

alley_wu: 楼主,您的代码编译通过了吗? 目测代码有很多问题。.....
感谢你的回复。我又试了一下,应该是可以的。
哪里有问题呢?

alley_wu2012-06-02 23:44:13

楼主,您的代码编译通过了吗? 目测代码有很多问题。

1471893852012-05-12 16:32:24

比较基础啦,新人可以学习一下的