您的位置:首页 > 其它

一个比较容易理解的归并排序--递归实现

2012-06-21 09:56 295 查看
一个归并排序的递归实现

1

#include <stdio.h>

2

#include <algorithm>

3

using namespace std;

4

#define MAX 1000

5

int buf[MAX];

6

void merge(int a[],int l,int m,int r)

7

{

8

int pa=l;

9

int pb=m+1;

10

int k=0;

11


12

while(pa<=m && pb<=r)

13

{

14

if(a[pa]<a[pb])

15

buf[k++]=a[pa++];

16

else

17

buf[k++]=a[pb++];

18

}

19

while(pa<=m)

20

buf[k++]=a[pa++];

21

while(pb<=r)

22

buf[k++]=a[pb++];

23


24

for(int i=0;i<k;i++)

25

a[l+i]=buf[i];

26

}

27

void mergeSort(int a[],int l,int h)

28

{

29

if(l<h)

30

{

31

int m=(l+h)/2;

32

mergeSort(a,l,m);

33

mergeSort(a,m+1,h);

34

merge(a,l,m,h);

35

}

36

}

37

void printIntArr(int n)

38

{

39

printf("%d ",n);

40

}

41

int main()

42

{

43

int a[10]={2,89,-1,8,0,7,13,0,11,3};

44

mergeSort(a,0,9);

45

//merge(a,0,4,9);

46

std::for_each(a,a+10,printIntArr);

47

return 0;

48

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐