排序算法_冒泡排序
一、算法描述:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
二、图示
三、性能描述
数据结构 :数组
最差时间复杂度 :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/冒泡排序