Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1319846
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

分类: C/C++

2013-08-19 21:15:57

很久之前码的代码,这个是最基本的

时间复杂度,最坏的情况每次都得交换,那么 1+2+3+...+(n-1) = (1 + (n-1))*n/2; 
      所以时间复杂度为O(n2

模型在这里

点击(此处)折叠或打开

  1. #include<stdio.h>

  2. /*****************************************************


  3. 只需要n-1趟就能排好


  4. 两个for循环的i,j比较容易理解


  5. ****************************************************/

  6. //5 nums
  7. void swap(int *a, int *b)
  8. {
  9.     int tmp;
  10.     tmp = *a;
  11.     *a = *b;
  12.     *b = tmp;
  13. }

  14. void bubble_sort(int *a)
  15. {    
  16.     int *p = a;
  17.     int i, j,tmp;
  18.     for(i = 0; i < 5 - 1; i++)
  19.     {
  20.         for(j = 0; j + i < 5-1; j++ )
  21.         {
  22.             if(a[j] > a[j+1])
  23.             {
  24.             /*    tmp = p[j];
  25.                 p[j] = p[j+1];
  26.                 p[j+1] = tmp;
  27.             */
  28.                 swap(&a[j], &a[j+1]);
  29.             }
  30.         }
  31.     }
  32. //    return p;
  33. }

  34. int main(int argc, char ** argv)
  35. {
  36.     int array[5] = {3,1,2,5,9};
  37.     
  38.     int *result = NULL;

  39.     int i;
  40.     
  41. //    result = bubble_sort(array);
  42.     bubble_sort(array);
  43.     for(i = 0; i < 5; i++)
  44.         printf("a[%d] = %d \n", i ,array[i]);

  45.     while(1);
  46.     return 0;

  47. }

阅读(1135) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~