Chinaunix首页 | 论坛 | 博客
  • 博客访问: 401989
  • 博文数量: 82
  • 博客积分: 2085
  • 博客等级: 大尉
  • 技术积分: 808
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-10 10:28
文章分类

全部博文(82)

文章存档

2014年(1)

2013年(4)

2012年(2)

2011年(3)

2010年(10)

2009年(36)

2008年(26)

我的朋友

分类: C/C++

2010-01-07 13:26:18

void merge(int array[], int f ,int m, int e){
 int *temp = (int *)malloc((e - f +1)*sizeof(int));
 int i = f;
 int j = m+1;
 int k = 0;
 int end1 = m;
 int end2 = e;
 while((i<=end1)&& (j<=end2)){
  if(array[i]<=array[j]){
   temp[k]=array[i++];
   
   }
  else{
   temp[k]=array[j++];
   
   }
  k++;
  }
 
 while(i<=end1){
  temp[k++]=array[i++];
 
  }
 while(j<=end2){
  temp[k++]=array[j++];
  }
 for (i = 0; i < (e - f +1); i++)
   array[f+i] = temp[i];
 free(temp);
}
 

void merge_sort(int array[], unsigned int first, unsigned int last)
{
 int mid = 0;
 if(first {
  mid = (first+last)/2;
  merge_sort(array, first, mid);
  merge_sort(array, mid+1,last);
  merge(array,first,mid,last);
 }
}
 
 
阅读(933) | 评论(0) | 转发(0) |
0

上一篇:PCI的一点东西

下一篇:arm 软核

给主人留下些什么吧!~~