冒泡排序和改进的冒泡排序
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//冒泡排序
15void 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//改进的冒泡排序
23void 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 == true) break;
31 }
32}
33
34#endif
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//冒泡排序
15void 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//改进的冒泡排序
23void 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 == true) break;
31 }
32}
33
34#endif
幸运草 2009-04-22 16:46 发表评论