Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1665966
  • 博文数量: 585
  • 博客积分: 14610
  • 博客等级: 上将
  • 技术积分: 7402
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-15 10:52
文章存档

2013年(5)

2012年(214)

2011年(56)

2010年(66)

2009年(44)

2008年(200)

分类: C/C++

2011-08-23 10:34:25

及时终止的冒泡排序 
(

当然了,现在还在写冒泡排序有点让人脸红,但是冒泡排序好多面试都问,而且好久没写博文了,还是写一个吧。各位看官轻拍。


下面代码写的不错,尤其是通过标记来判断是否已经排序成功,可以及时终止,提高了性能。
当然了,如果冒泡排序的算法决定了它的整体性能不如其他优秀的排序算法。在数据量比较大的情况下,
不能选用冒泡排序。

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>

  4. int onepass(int a[],int n)
  5. {
  6.     int i ;
  7.     int interchanges = 0;
  8.     int temp;
  9.     for(= 0;i<n-1;i++)
  10.     {
  11.         if(a[i] > a[i+1])
  12.     {
  13.             temp = a[i];
  14.      a[i] = a[i+1],
  15.      a[i+1] = temp;
  16.      interchanges = 1;
  17.         }
  18.      }
  19.      return interchanges;
  20. }

  21. void bubblesort(int a[],int n)
  22. {
  23.     int i;
  24.     for(= 0;i<n-1;i++)
  25.     {
  26.              if(!onepass(a,n-i))
  27.         break;
  28.     }
  29. }

  30. int test_bubblesort()
  31. {
  32.     int i = 0;
  33.     int array[10];
  34.   
  35.     srand(time(NULL));
  36.     for(= 0;i<10;i++)
  37.     {
  38.      array[i] = rand()%1000;
  39.      printf("array[%d] = %d\n",i,array[i]);
  40.     }

  41.     bubblesort(array,10);
  42.     printf("--------------after sort----------\n");
  43.     for(= 0;i<10;i++)
  44.     {    
  45.         printf("array[%d] = %d\n",i,array[i]);
  46.     }
  47.     return 0;
  48. }
  49. int main()
  50. {
  51.     test_bubblesort();
  52.     return 0;
  53. }
运行结果如下
root@libin:~/program/C/bubblesort# ./test
array[0] = 722
array[1] = 3
array[2] = 445
array[3] = 614
array[4] = 331
array[5] = 785
array[6] = 936
array[7] = 916
array[8] = 27
array[9] = 477
--------------after sort----------
array[0] = 3
array[1] = 27
array[2] = 331
array[3] = 445
array[4] = 477
array[5] = 614
array[6] = 722
array[7] = 785
array[8] = 916
array[9] = 936

参考文献:UNIX系统编程 Kay A. Robbins ,Steven Robbins.

我的更多文章
阅读(747) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~