博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速分类
阅读量:6036 次
发布时间:2019-06-20

本文共 767 字,大约阅读时间需要 2 分钟。

实现的基本思想如下:

  选取A的某个元素t,然后将A的其它元素重新排列,使 得在t以前出现的所有元素都小于或等于t,而所有在t后面出现的所有元素都大于t。称这种重新整理为划分(Partitioning),元素t称为划分元素(Partition element)。快速分类就是通过不断地对产生的文件进行划分来实现元素的重新排列。

例如:  用A(m)划分集合A(m:P-1)

void Partition(m,p)//在集合A(m),A(m+1),…,A(p-1)中的元素按如下方式重新排列://若最初t=A(m),则在重排完成之后,对于m和p-l之间的某个q,有A(q)=t,//并使得对于m≤k<q,有A(k)≤t,而对于q<k<P,有A(k)≥t//退出过程时,p带着划分元素所在的下标位置,即q的值返回。eType a[n]; //定义为全局变量int m,p,i;v=a[m];i=m; //A(m)是划分元素while(i
v ) //p由右向左移,至少做一次。if(i

 

有了划分集合A(m:P-1)的算法,使用分治策略可以设计出一个算法来对n个元素进行分类。随着对函数Partition的一次调用,就会产生出两个这样的集合S1和S2,S1的所有元素小于或等于S2的任何元素。因此S1和S2可独立分类。重复使用过程Partition,每个集合都将被分类。下列算法描述了这种分类的全过程。快速分类

void QuickSort(p,q)//将全程数组A(1:n)中的元素A(p),…,A(q)按非递减的方式分类。//认为A(n+1)已被定义,且大于或等于A(p:q)的所有元素,//即假定A(n+1)为机器最大数。int p,q;eType a[n];int n; //定义成全程变量if(q

 

转载地址:http://vblhx.baihongyu.com/

你可能感兴趣的文章
CSS3 transforms 3D翻开
查看>>
利用传入的Type类型来调用范型方法的解决方案
查看>>
Top命令内存占用剖析
查看>>
转 网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO
查看>>
求带分数(蓝桥杯)
查看>>
Bootstrap系列 -- 11. 基础表单
查看>>
格拉西安《智慧书》中最有价值的23条法则
查看>>
7款经典炫酷的HTML5/jQuery动画应用示例及源码
查看>>
那些年我们一起追过的缓存写法(四)
查看>>
mssql手工注入
查看>>
zoj 3203 Light Bulb,三分之二的基本问题
查看>>
Oracle如何删除表中重复记录
查看>>
洛谷八月月赛Round1凄惨记
查看>>
Retrofit 入门学习
查看>>
【树莓派】树莓派网络配置:静态IP、无线网络、服务等
查看>>
JavaScript——双向链表实现
查看>>
抽象类和借口的区别
查看>>
WebConfig配置文件详解
查看>>
nginx的location root 指令
查看>>
zDiaLog弹出层
查看>>