当前位置:首页 > 全部子站 > IT > Oracle

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

来源:长理培训发布时间:2017-10-20 14:27:42

  代码:

  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)。

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部