`

快速排序java代码(算法导论第7章)

阅读更多
其原理见附件图形,代码如下:
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
分享到:
评论

相关推荐

    算法导论第1-16章编程题答案

    3. **第五章:排序** - 这一章涵盖了各种排序算法,如冒泡排序、插入排序、选择排序、堆排序以及快速排序等,Java代码将直观地展示这些算法的工作过程。 4. **第八章:图算法** - 图算法包括了Dijkstra最短路径算法...

    算法导论(part2)

    ·快速排序(第7.1节)中用到的划分方法与期望线性时间顺序统计算法(expected linear-time order-statistic algorithm,第9.2节)有所变化。现在,我们采用了Lomuto提出的方法,并将该方法与指示器随机变量一起使用,...

    算法导论 中文版 + 英文版 + 课件

    《算法导论》是一本广泛认可的计算机科学经典教材,涵盖了算法设计、分析以及实现的核心概念。这本书由Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest和Clifford Stein合著,是全球许多大学计算机科学...

    算法导论(part1)

    ·快速排序(第7.1节)中用到的划分方法与期望线性时间顺序统计算法(expected linear-time order-statistic algorithm,第9.2节)有所变化。现在,我们采用了Lomuto提出的方法,并将该方法与指示器随机变量一起使用,...

    算法导论(第二版)及习题解答

    《算法导论(第二版)》是一本广受赞誉的计算机科学教材,它深入浅出地介绍了算法的设计、分析和实现。这本书对于学习算法、提升编程能力以及理解复杂度分析至关重要。书中涵盖的内容广泛,包括排序、搜索、图算法、...

    算法导论 part1

    根据提供的文件信息,我们可以推断出此文档与“算法导论”有关,但具体到第一部分的内容并未直接给出。为了生成相关知识点,我们将基于“算法导论”这一主题进行展开,探讨该领域的基础概念和技术要点。 ### 算法...

    算法导论(第三版)+Solutions(英文版)

    《算法导论(第三版)+Solutions(英文版)》是计算机科学领域的重要参考资料,尤其对于学习和研究算法的学者来说,它堪称经典。这本书深入浅出地介绍了各种算法的设计、分析和实现,旨在帮助读者掌握算法的核心概念...

    princeton-algorithms-ii:算法导论代码,第二部分

    《算法导论》是计算机科学领域的一本经典教材,它深入浅出地介绍了各种重要的算法,并提供了详尽的实现和分析。"princeton-algorithms-ii"是这本教材的第二部分,主要涵盖了一些高级和复杂的算法主题。在这个压缩包...

    算法 英文版第4版.pdf

    书中涵盖了插入排序、选择排序、快速排序、归并排序、堆排序等多种排序算法,并分析了它们的时间复杂度和稳定性。搜索方面,包括线性搜索、二分搜索、哈希搜索以及图的遍历算法如深度优先搜索和广度优先搜索。 四、...

    计算机导论-第五讲 计算机科学体系

    而算法则是解决问题的步骤,如排序算法(冒泡排序、快速排序、归并排序)和搜索算法(二分查找、深度优先搜索、广度优先搜索)等,优化算法设计是提升软件性能的关键。 编程语言和编译原理也是计算机科学体系中的...

    Algorithms In Java (4th)

    《算法导论(Java版第四版)》是Robert Sedgewick所著的一部经典计算机科学著作,主要关注算法的设计、分析以及用Java语言实现。这本书深入浅出地讲解了计算机科学中最基础且实用的算法,对于学习和理解算法有着极高...

    JAVA学习资料Linux 大数据 springBoot java基础 jfinal 数据结构和算法

    《算法导论》是这个领域的经典教材,涵盖了排序、搜索、图算法等多种核心概念,是提升编程能力和问题解决能力的必读书籍。 7. **Python**: Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,因其...

    《计算机科学导论》习题(答案)

    算法则是解决问题的步骤,如排序算法(冒泡、选择、插入、快速、归并等)、查找算法(顺序、二分查找等)。习题可能会要求设计或分析算法效率。 3. **编程语言**:习题可能包括编写或理解不同编程语言(如C、C++、...

    algs4:使用 Java 中的书籍算法学习算法的练习的回购

    《algs4》是经典算法教材《算法导论第四版》("Introduction to Algorithms, Fourth Edition")的配套 Java 库,由 Princeton 大学的 Eric Demaine 和 Robert Sedgewick 编写。这个资源提供了丰富的算法实现,是学习...

    《计算机科学导论》复习.rar

    4. 算法与数据结构:讲解基本数据结构如数组、链表、栈、队列,以及算法设计的基本原则,如排序和搜索算法,如冒泡排序、快速排序和二分查找。 5. 计算机网络:基础网络概念,如OSI模型、TCP/IP协议,以及互联网的...

    计算机科学导论PPTV2.0.zip

    基础算法如排序(冒泡、选择、快速、归并)、查找(顺序、二分、哈希)是重点。 4. **数据结构**:数据结构如数组、链表、栈、队列、树(二叉树、平衡树)、图等是解决问题的关键。它们如何存储数据,以及如何有效...

Global site tag (gtag.js) - Google Analytics