冒泡排序和改进的冒泡排序
1
/**//*-------------------------------------------------------------------------------------------
2
Bubble_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 == true) break;
31
}
32
}
33
34
#endif


2

3

4

5

6

7

8

9

10

11

12

13

14

15

16



17

18

19

20

21

22

23

24



25

26



27

28

29



30

31

32

33

34

幸运草 2009-04-22 16:46 发表评论