排序——冒泡排序

 1 /************************************************************************/
2 /*
3 冒泡排序
4 思想:将大的数据像泡泡冒到最后端,这样每次冒泡后,末端的位置上是最大的元素。
5 分析:时间复杂度 最好O(n) n次比较,最坏(逆序) O(N2),稳定
6
7 其他:在最坏的情况,冒泡排序需要O(n2)次交换,而插入排序只要最多O(n)交换。
8 天真的冒泡排序实作(类似下面)通常会对已经排序好的数列拙劣地执行(O(n2)),
9 而插入排序在这个例子只需要O(n)个运算。因此很多现代的算法教科书避免使用冒泡排序,而用插入排序取代之。
10
11 */
12 /************************************************************************/
13 template<typename T> void bubble_sort(T list[],int n)
14 {
15
16 for (int i=0;i<n;i++)
17 {
18 bool flag=false;
19 //对0 到 n-i-1间元素做冒泡,即交换
20 for (int j=0;j<n-i-1;j++)
21 {
22 if (list[j+1]<list[j])
23 {
24 T temp=list[j];
25 list[j]=list[j+1];
26 list[j+1]=temp;
27 flag=true;
28 }
29 }
30 if (!flag)
31 break;
32 }
33 }

posted on 2011-09-17 21:46  youngkang  阅读(380)  评论(0)    收藏  举报