基本排序算法及分析(二):冒泡排序

基本排序算法及分析(二):冒泡排序

冒泡排序和改进的冒泡排序

 1 /**/ /*-------------------------------------------------------------------------------------------
 2Bubble_sort.h
 3冒泡排序: 时间复杂度为O(N^2)
 4改进的冒泡排序: 时间复杂度仍为O(N^2)
 5    一般的冒泡排序方法有可能会在已经排好序的情况下继续比较,改进的冒泡排序
 6    设置了一个哨兵flag,如果一次for循环没有进行交换,则元素已经排好序,由哨兵控制退出循环。
 7-------------------------------------------------------------------------------------------*/

 8 #ifndef BUBBLE_SORT_H
 9 #define  BUBBLE_SORT_H
10
11 #include  " typedef.h "
12 #include  " swap.h "
13
14 // 冒泡排序
15 void  Bubble_sort(T  * a,  int  n)
16 {
17    for(int i=n-1; i != 0--i)
18        for(int j=0; j != i; ++j)
19            if(a[j+1< a[j]) swap(a[j+1],a[j]);
20}

21
22 // 改进的冒泡排序
23 void  Improved_Bubble_sort(T  * a,  int  n)
24 {    
25    for(int i=n-1; i != 0--i)
26    {
27        bool flag = true;
28        for(int j=0; j != i; ++j) //这一趟遍历如果没有交换,则已完成排序
29            if(a[j+1< a[j])  { swap(a[j+1],a[j]); flag = false; }
30        if(flag == truebreak;
31    }

32}

33
34 #endif

你可能感兴趣的:(基本排序算法及分析(二):冒泡排序)