其原理见附件图形,代码如下:
package yangkunlin.algorithm.sort;
import yangkunlin.algorithm.tool.SortTool;
public class QuickSort {
/**
* 快速排序
* 最坏运行时间O(n^2);期望运行时间O(nlgn)
* 实现就地排序
* @param source
*/
public void quickSort(int[] source){
quickSort(source, 1, source.length);
}
/**
* 快速排序
* 对source的p到r进行排序。p、r为数组从1数起。包含source[p-1]、source[r-1]
* @param source 待排序数组
* @param p 排序起始点
* @param r 排序终止点
*/
public void quickSort(int[] source, int p ,int r){
if(p < r){
int q = partition(source, p, r);
quickSort(source, p, q-1);
quickSort(source, q+1, r);
}
}
/**
* 数组source划分为 <= 第r元素的和>r元素的两个区域。并返回分治点的位置。
* 对source进行就地重排
* @param source
* @param p
* @param r
* @return
*/
public int partition(int[] source, int p, int r) {
int pivotElement = source[r-1]; //支点元素
int i = p-2; //大于支点元素集的起点元素所在位
for(int j = p-1 ; j <= r-1; j++ ){
if(source[j] <= pivotElement ){
i++;
SortTool.exchange(source, i, j);
}
}
return i;
}
}
- 大小: 83.7 KB
分享到:
相关推荐
3. **第五章:排序** - 这一章涵盖了各种排序算法,如冒泡排序、插入排序、选择排序、堆排序以及快速排序等,Java代码将直观地展示这些算法的工作过程。 4. **第八章:图算法** - 图算法包括了Dijkstra最短路径算法...
·快速排序(第7.1节)中用到的划分方法与期望线性时间顺序统计算法(expected linear-time order-statistic algorithm,第9.2节)有所变化。现在,我们采用了Lomuto提出的方法,并将该方法与指示器随机变量一起使用,...
《算法导论》是一本广泛认可的计算机科学经典教材,涵盖了算法设计、分析以及实现的核心概念。这本书由Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest和Clifford Stein合著,是全球许多大学计算机科学...
·快速排序(第7.1节)中用到的划分方法与期望线性时间顺序统计算法(expected linear-time order-statistic algorithm,第9.2节)有所变化。现在,我们采用了Lomuto提出的方法,并将该方法与指示器随机变量一起使用,...
《算法导论(第二版)》是一本广受赞誉的计算机科学教材,它深入浅出地介绍了算法的设计、分析和实现。这本书对于学习算法、提升编程能力以及理解复杂度分析至关重要。书中涵盖的内容广泛,包括排序、搜索、图算法、...
根据提供的文件信息,我们可以推断出此文档与“算法导论”有关,但具体到第一部分的内容并未直接给出。为了生成相关知识点,我们将基于“算法导论”这一主题进行展开,探讨该领域的基础概念和技术要点。 ### 算法...
《算法导论(第三版)+Solutions(英文版)》是计算机科学领域的重要参考资料,尤其对于学习和研究算法的学者来说,它堪称经典。这本书深入浅出地介绍了各种算法的设计、分析和实现,旨在帮助读者掌握算法的核心概念...
《算法导论》是计算机科学领域的一本经典教材,它深入浅出地介绍了各种重要的算法,并提供了详尽的实现和分析。"princeton-algorithms-ii"是这本教材的第二部分,主要涵盖了一些高级和复杂的算法主题。在这个压缩包...
书中涵盖了插入排序、选择排序、快速排序、归并排序、堆排序等多种排序算法,并分析了它们的时间复杂度和稳定性。搜索方面,包括线性搜索、二分搜索、哈希搜索以及图的遍历算法如深度优先搜索和广度优先搜索。 四、...
而算法则是解决问题的步骤,如排序算法(冒泡排序、快速排序、归并排序)和搜索算法(二分查找、深度优先搜索、广度优先搜索)等,优化算法设计是提升软件性能的关键。 编程语言和编译原理也是计算机科学体系中的...
《算法导论(Java版第四版)》是Robert Sedgewick所著的一部经典计算机科学著作,主要关注算法的设计、分析以及用Java语言实现。这本书深入浅出地讲解了计算机科学中最基础且实用的算法,对于学习和理解算法有着极高...
《算法导论》是这个领域的经典教材,涵盖了排序、搜索、图算法等多种核心概念,是提升编程能力和问题解决能力的必读书籍。 7. **Python**: Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,因其...
算法则是解决问题的步骤,如排序算法(冒泡、选择、插入、快速、归并等)、查找算法(顺序、二分查找等)。习题可能会要求设计或分析算法效率。 3. **编程语言**:习题可能包括编写或理解不同编程语言(如C、C++、...
《algs4》是经典算法教材《算法导论第四版》("Introduction to Algorithms, Fourth Edition")的配套 Java 库,由 Princeton 大学的 Eric Demaine 和 Robert Sedgewick 编写。这个资源提供了丰富的算法实现,是学习...
4. 算法与数据结构:讲解基本数据结构如数组、链表、栈、队列,以及算法设计的基本原则,如排序和搜索算法,如冒泡排序、快速排序和二分查找。 5. 计算机网络:基础网络概念,如OSI模型、TCP/IP协议,以及互联网的...
基础算法如排序(冒泡、选择、快速、归并)、查找(顺序、二分、哈希)是重点。 4. **数据结构**:数据结构如数组、链表、栈、队列、树(二叉树、平衡树)、图等是解决问题的关键。它们如何存储数据,以及如何有效...