电话:0731-83595998
导航

2011软考程序员算法实例解析:快速排序算法

来源: 2017-10-20 14:27

  代码:

  void QuickSort(int low,int high,int *array)

  {

  int pos;

  if(low{

  pos=SPLIT(low,high,array); //以array[low]进行划分,pos最为划分点

  //前一部分后一部分,反之

  QuickSort(low,pos-1,array); //对划分后的前一部分递归处理

  QuickSort(pos+1,high,array); //对划分后的后一部分递归处理

  }

  }

  int SPLIT(int low,int high,int *array)

  {

  int temp=array[low]; //用temp来记录划分数

  while(low{

  while(array[high]>temp&&low寻找小于temp的数

  high--;

  if(low==high)

  break;

  else

  {

  array[low]=array[high];

  low++;

  }

  while(array[low]寻找大于temp的数

  low++;

  if(low==high)

  break;

  else

  {

  array[high]=array[low];

  high--;

  }

  }

  array[low]=temp; //最终low=high作为划分点,并将划分数存于array[low]

  return low;

  }

  思想:

  就是你从数组中任取一个元素p(可随机取,现在以取第一个为例);

  以P作为主元,对数组 进行划分 ,前一部分小于 P,后一部分大于p;

  最后划分处存储 p;

  然后分别对划分后的前一部分和后一部分递归调用;

  算法平均时间复杂度: O(nlogn)。

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端