快速分类

简介: 实现的基本思想如下:   选取A的某个元素t,然后将A的其它元素重新排列,使 得在t以前出现的所有元素都小于或等于t,而所有在t后面出现的所有元素都大于t。称这种重新整理为划分(Partitioning),元素t称为划分元素(Partition element)。

实现的基本思想如下:

  选取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<p) {
do { i=i+1;} while(a[i]<v) //i由左向右移,至少做一次。
do { p=p-1;} while(a[p]>v ) //p由右向左移,至少做一次。
if(i<p) {InterChange(a[i],a[p]);} //A(i)和A(p)换位
};//while
a[m]=a[p];a[p]=v; //划分元素在位置p
}// Partition

 

有了划分集合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<q) {j=q+1;
Partition(p,j);
QuickSort(p,j-1); //j是划分元素的位置
QuickSort(j+1,q);
};//if
}//QuickSort

 

相关文章
leetcode-2006:差的绝对值为 K 的数对数目
leetcode-2006:差的绝对值为 K 的数对数目
103 0
|
2月前
|
网络协议 Linux 定位技术
快手怎么改IP归属地
快手APP通过基站定位、Wi-Fi指纹和IP地址三重机制判定用户归属地
|
5月前
|
人工智能 安全 测试技术
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
371 0
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL忘记密码后重置密码
MySQL忘记密码后重置密码
305 0
|
数据采集 人工智能 Serverless
AI 克隆声音,只需 3 分钟(附最全教程)
文章介绍了GPT-Sovits,一个开源的生成式语音模型,因其在声音克隆上的高质量和简易性而受到关注。阿里云函数计算(Function Compute)提供了一个快速托管GPT-Sovits的方法,让用户无需管理服务器即可体验和部署该模型。通过函数计算,用户可以便捷地搭建基于GPT-Sovits的文本到语音服务,并享受到按需付费和弹性扩展的云服务优势。此外,文章还列举了GPT-Sovits在教育、游戏、新能源等多个领域的应用场景,并提供了详细的步骤指导,帮助用户在阿里云上部署和体验GPT-Sovits模型。
36383 8
|
安全 Java 开发者
Java编程:深入探索其原理、特性与实战代码
Java编程:深入探索其原理、特性与实战代码
130 1
|
Cloud Native Java Nacos
Nacos 1.4.1核心功能组件及使用入门
以上步骤提供了 Nacos 1.4.1 的基本使用概览,具体的配置和使用可能根据你的环境和需求有所不同。
420 6
|
存储 人工智能 监控
嵌入式系统:技术、应用与未来发展
嵌入式系统:技术、应用与未来发展
808 1
|
编解码 开发工具 Android开发
技术心得:打造自己的智能投屏体验——Android投屏开发入门
技术心得:打造自己的智能投屏体验——Android投屏开发入门
1066 0
|
Kubernetes 流计算 Docker
要将Flink CDC 3.0部署到Kubernetes上
【1月更文挑战第24天】【1月更文挑战第119篇】要将Flink CDC 3.0部署到Kubernetes上
444 2