在路上

不是专业,只会通俗

导航

排序算法_冒泡排序

一、算法描述:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

二、图示

          

三、性能描述

  数据结构 :数组

  最差时间复杂度 :O(n2)

  最优时间复杂度 :O(n)

  平均时间复杂度 :O(n2)

  最差空间复杂度 :总共O(n),需要辅助空间O(n)

四、总结

  效率低,打死也不用。仅作学生入门算法。

五、C语言实现代码

View Code
 1    #include <stdio.h>
 2  
 3    void bubbleSort(int arr[], int count)
 4    {
 5        int i = count, j;
 6        int temp;
 7  
 8        while(i > 0)
 9        {
10           for(j = 0; j < i - 1; j++)
11           {
12               if(arr[j] > arr[j + 1])
13               {   temp = arr[j];
14                   arr[j] = arr[j + 1];
15                   arr[j + 1] = temp;
16               }
17           }
18           i--;
19       }
20  
21   }
22  
23   int main(int arc, char* const argv[])
24   {
25       //测试数据
26       int arr[] = {5, 4, 1, 3, 6};
27       //冒泡排序
28       bubbleSort(arr, 5);
29       //打印排序结果
30       int i;
31       for(i = 0; i < 5; i++)
32           printf("%4d", arr[i]);
33  }

 

 

 

参考文档:http://zh.wikipedia.org/wiki/冒泡排序

 

posted on 2013-01-16 17:10  OnRoad_  阅读(478)  评论(0编辑  收藏  举报