Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2794301
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: C/C++

2012-10-07 21:06:19


点击(此处)折叠或打开

  1. void Merge(int array[] , int low , int mid , int high)
  2. {
  3.     int i , j , k;
  4.     int *temp = (int *)malloc((high - low + 1)*sizeof(int));
  5.     i = low , j = mid + 1 , k = 0;
  6.     while(i <= mid && j <= high)
  7.     {
  8.         if(array[i] < array[j]) // 进行排序存入动态分配的数组中
  9.             temp[k++] = array[i++];
  10.         else
  11.             temp[k++] = array[j++];
  12.     }
  13.     while(i <= mid) // 如果前一半中还有未处理完的数据,按顺序移入动态分配的数组内
  14.         temp[k++] = array[i++];
  15.     while(j <= high) // 如果前一半中还有未处理完的数据,按顺序移入动态分配的数组内
  16.         temp[k++] = array[j++];
  17.     for(i = low , j = 0; i<= high ; ++i)
  18.         array[i] = temp[j++];
  19.     free(temp);
  20. }

  21. void Msort(int array[] , int low , int high)
  22. {
  23.     int mid;
  24.     if(low < high)
  25.     {
  26.         mid = (low + high)>>1;
  27.         Msort(array , low , mid);
  28.         Msort(array , mid + 1 , high);
  29.         Merge(array , low , mid , high);
  30.     }
  31. }

阅读(1046) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~