Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8407
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-10 22:07
文章分类

全部博文(2)

文章存档

2015年(2)

我的朋友
最近访客

分类: C/C++

2015-09-05 09:24:19


  1. //冒泡排序的三种实现方法(以从小到大排序为例)

  2. //设数组长度为N
  3. //1、compare相邻的前后两个数据,若prev_data > next_data,则swap;
  4. //2、对0~(N-1)个数据进行一次遍历,max_data "沉"到N-1个位置;
  5. //3、N = N-1,if(n != 0),重复2,else (sort is completed).


  6. //冒泡排序1
  7. void BubbleSort1(int a[], int n)
  8. {
  9.     int i,j;
  10.     
  11.     for(i=0;i<n;i++){ //外循环控制循环趟数
  12.      for(j=0;j<n-i;j++){ //内循环控制选择要进行比较的数
  13.          if(a[j-1] > a[j]){
  14.              Swap(a[j-1],a[j]);
  15.             }
  16.         }
  17.     }
  18. }

  19. //冒泡排序2

  20. //设置一个标志flag,if swap,then flag=ture;else flag = false,no swap,so sort is completed.

  21. void BubbleSort2(int a[], int n)
  22. {
  23.      int i;
  24.      bool flag;
  25.     
  26.      flag = ture;
  27.      while(flag){
  28.      flag = false;
  29.          for(i=1;i<n;i++){
  30.          if(a[i-1]>a[i]){
  31.              Swap(a[i-1],a[i]);
  32.                  flag = ture;
  33.              }
  34.             
  35.              n--;
  36.          }
  37.      }
  38. }

  39. //冒泡排序3

  40. void BubbleSort3(int a[]; int n)
  41. {
  42.     int i,j;
  43.     int flag;
  44.     
  45.     flag = n;
  46.     while(flag > 0){
  47.      j = flag;
  48.         flag = 0;
  49.         for(i = 1; i < n; i++){
  50.          if(a[i-1] > a[i]){
  51.             Swap(a[i-1],a[i]);
  52.             flag = i;
  53.             }
  54.         }
  55.     }
  56. }

阅读(1159) | 评论(0) | 转发(0) |
0

上一篇:队列的操作集锦

下一篇:没有了

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