Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1466563
  • 博文数量: 218
  • 博客积分: 6394
  • 博客等级: 准将
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-08 15:33
个人简介

持之以恒

文章分类

全部博文(218)

文章存档

2013年(8)

2012年(2)

2011年(21)

2010年(55)

2009年(116)

2008年(16)

分类:

2010-08-26 00:07:26

归并排序==>递归
#include "stdafx.h"
#include
void Run(int * pData,int nCount)
{
 if (nCount > 1)
 {
  int k = nCount / 2;
  Run(pData,k);
  Run(pData + k,nCount - k);
  int * pData1 = new int[nCount];
  int * p1 = pData;
  int * p2 = pData + k;
  int * p3 = pData1;
  while(p1 < pData + k && p2 < pData + nCount)
  {
   if (*p2 < * p1)
   {
    *p3++ = *p2++;
   }
   else
   {
    *p3++ = *p1++;
   }
  }
  if (p1 < pData + k)
  {
   while (p1 < pData + k)
   {
    *p3++ = *p1++;
   }
  }
  else if (p2 < pData + nCount)
  {
   while (p2 < pData + nCount)
   {
    *p3++ = *p2++;
   }
  }
  memcpy(pData,pData1,nCount * sizeof(int));
  delete []pData1;
  }
}
int main()
{
 int testArray[] = {1,10,8,9,5,3,4,5,7,4};
 Run(testArray,sizeof(testArray) / sizeof(testArray[0]));
 getchar();
 return 0;
}
阅读(1483) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~