设为首页 加入收藏

TOP

c/c++常用算法-- 基本排序算法(二)
2014-02-08 13:36:04 来源: 作者: 【 】 浏览:160
Tags:c/c 常用 算法 --  基本 排序

 

  //合并排序

  void MergeSort(int a[],int n)

  {

  int *p;

  int h,count,len,f;

  count = 0; //排序步骤

  len =1; //有序序列的升序

  f = 0; //变量f作标志

  if (!(p=(int *)malloc(sizeof(int)*n))) //分配内存空间

  {

  printf("内存分配失败!\n");

  exit(0);

  }

  while (len < n)

  {

  if (f == 1) //交替在a和p之间合并

  {

  MergeOne(p, a, n, len); //p合并到a

  }

  else

  {

  MergeOne(a, p, n, len); //a合并到p

  }

  len = len *2;

  f = 1-f;

  count++;

  printf("第%d步排序结果:",count);

  for (h = 0; h < SIZE; h++)

  {

  printf(" %d",a[h]);

  }

  printf("\n");

  }

  if (f)

  {

  for (h = 0; h < n; h++)

  {

  a[h] = p[h];

  }

  }

  free(p);

  }

  int main(int argc, const char * argv[])

  {

  int shuzu[SIZE],i;

  srand(time(NULL));

  for (i=0; i

  {

  shuzu[i] = rand() % 100;

  }

  printf("排序前的数组为:\n");

  for (i=0; i

  {

  printf(" %d",shuzu[i]);

  }

  printf("\n");

  MergeSort(shuzu,SIZE);

  printf("排序后的数组为:\n");

  for (i=0; i

  {

  printf(" %d",shuzu[i]);

  }

  printf("\n");

  // std::cout << "Hello, World!\n";

  return 0;

  }

  运行结果:

      

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇全排列之字典序法 下一篇最小生成树算法Prim算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)