`
Xcupidtx
  • 浏览: 14937 次
社区版块
存档分类
最新评论

快速排序——java递归实现

    博客分类:
  • JAVA
阅读更多
package com.bjsxt.test;

import org.junit.Test;

/**
 * 递归实现快速排序算法
 * @author jsqiu
 *
 */
public class FastSort {

	@Test
	public void quick_sortTest() {
		int[] a = new int[] { 72, 6, 57, 88, 60, 42, 83, 73, 48, 85 };
		quick_sort(a, 0, a.length-1);
	}

	void quick_sort(int s[], int begin, int end) {
		if (begin < end) {
			// Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
			int i = begin, j = end, x = s[begin];
			while (i < j) {
				while (i < j && s[j] >= x)
					// 从右向左找第一个小于x的数
					j--;
				// 很多人认为既然前面判断了i<j,这里就不用再判断一遍了,其实这个判断很重要。
				// 例如此时进while时i=4,j=5,前面while的判断把j减1了,如果不加这个判断
				// s[i++] = s[j]会把i加1,最终变成i=6,j=5,后面就乱套了,不信你可以试试。
				if (i < j) 
					s[i++] = s[j];

				while (i < j && s[i] < x)
					// 从左向右找第一个大于等于x的数
					i++;
				if (i < j)
					s[j--] = s[i];
			}
			s[i] = x;
			for (int index = 0; index < s.length; index++) {
				System.out.print(s[index] + " ");
			}
			System.out.println();
			quick_sort(s, begin, i - 1); // 递归调用
			quick_sort(s, i + 1, end);
		} else {
			return; // 这句加不加都没关系,方便理解加了这个else
		}
	}

}

 

分享到:
评论

相关推荐

    数据结构 ——java语言描述 源代码

    9. **排序算法**:包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等,Java提供了`Arrays.sort()`方法实现部分排序。 10. **查找算法**:如二分查找、哈希查找,以及在图和树中的查找算法。 11. **...

    算法可视化系列——排序算法——快速排序

    在Java中,快速排序通常通过递归函数实现。以下是一个简单的快速排序的Java实现示例: ```java public class QuickSort { public void quickSort(int[] arr, int low, int high) { if (low ) { int pivotIndex =...

    数据结构与算法答案——java语言描述

    本资料集是“数据结构与算法答案——java语言描述”,虽然全为英文内容,但其深入探讨了使用Java实现数据结构和算法的细节。 1. **数组**:数组是最基本的数据结构之一,它是一系列相同类型元素的集合,可以通过索...

    数据结构与算法分析——Java语言描述

    《数据结构与算法分析——Java语言描述》是一本深度探讨数据结构和算法的专著,主要面向使用Java编程语言的读者。数据结构是计算机科学的基础,它涉及到如何在内存中组织和存储数据,以便高效地访问和操作。而算法则...

    快速排序算法以及归并算法

    根据给定的文件信息,我们将深入探讨两种经典的排序算法——快速排序和归并排序,并结合Java语言实现进行详细解析。 ### 快速排序算法 快速排序是一种高效的排序算法,采用分而治之的策略,其核心思想是选择一个...

    Java实现的快速排序和随机快排

    在这个Java实现中,我们将会探讨快速排序以及其变种——随机化快速排序。 1. **快速排序的基本原理** 快速排序的核心是选择一个“基准”元素,将数组分为两部分:小于基准的元素和大于或等于基准的元素。然后对这...

    各种排序算法java实现

    标题 "各种排序算法java实现" 涉及到的是计算机科学中的一个重要领域——算法,特别是排序算法在Java编程语言中的具体应用。排序算法是数据结构与算法分析中的基础部分,它们用于将一组数据按照特定顺序排列。在这个...

    我的LeetCode和剑指offer刷题源码——Java版.zip

    标题 "我的LeetCode和剑指offer刷题源码——Java版.zip" 提示这是一个包含Java编程语言实现的解题代码库,主要针对两个知名的在线编程挑战平台:LeetCode和剑指Offer(也称为《程序员面试金典》)。LeetCode是一个...

    数据结构与算法分析——Java语言描述-带书签目录高清扫描版

    排序算法如冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序,各有优缺点,适用于不同的数据特性。查找算法包括顺序查找、二分查找和哈希查找,其中哈希表提供了近乎常数时间的查找效率。此外,高级算法如...

    <<数据结构>> 内部排序的java实现

    Java中实现快速排序的关键是“分区”函数,它选择一个“基准”元素并将数组分为两部分。快速排序的平均时间复杂度为O(n log n),但在最坏情况下(输入已排序或逆序)会退化为O(n²)。 归并排序同样基于分治思想,它...

    快速排序代码整合集合

    以下是对三种编程语言——C语言、Java和Python实现快速排序的详细说明。 1. **C语言实现**: 在C语言中,快速排序通常使用指针和递归来实现。首先,我们需要定义一个函数来交换两个元素,然后定义主函数进行排序,...

    快速排序与归并排序的算法比较实验报告

    这篇实验报告将深入探讨两种经典的排序算法——快速排序和归并排序,通过对它们在Java环境中的实现和性能测试,揭示它们在处理不同规模数据时的效率差异。 **快速排序(Quick Sort)** 快速排序由C.A.R. Hoare在...

    树形DP和单链表算法题目PPT课件——Java

    判断BST的过程可以通过递归实现,递归函数需要检查当前节点值与左右子树的范围是否符合BST的性质。在递归过程中,维护一个最大值和最小值的上下界,根据这些值来决定当前节点是否合法。 **分支定界法(Branch and ...

    java实现的4种排序算法(冒泡、快速、插入、选择)

    以下是根据标题和描述中提到的四种排序算法——冒泡排序、快速排序、插入排序和选择排序的详细说明。 **冒泡排序(BuddleSort)**: 冒泡排序是一种简单的交换排序,它通过重复遍历待排序的列表,比较相邻元素并...

    java数组排序

    在Java编程语言中,数组排序是一项基础且重要的任务。它涉及到不同的算法,这些...在实际应用中,还可以考虑使用Java的内置排序方法`Arrays.sort()`,它使用了一种高效的快速排序变体,但具体实现细节则由JVM实现决定。

    讲递java实现 代码

    2. **Recursion.java**:这是一个更通用的递归实现示例,可能包含了多种不同的递归算法,如阶乘计算、汉诺塔、快速排序等。递归在解决这些问题时,通常会将大问题分解为小问题,直到小问题可以直接求解,然后通过...

    算法-归并排序(java)(csdn)————程序.pdf

    从上面的java实现代码可以看出,归并排序算法主要分为两个步骤:递归排序和合并排序。 1. 递归排序:在sort()方法中,我们将原始数组分成两个小数组,然后递归地对每个小数组进行排序。 2. 合并排序:在merge()方法...

    qk_快速排序算法源代码.zip

    在Java中,快速排序通常通过递归方法来实现,使用两个指针,一个从左向右扫描,一个从右向左扫描,找到两个指针指向的元素满足特定条件(例如,左指针元素小于枢轴,右指针元素大于枢轴)时,交换它们的位置,直到两...

    常用排序算法小结(附Java实现)

    文章可能涵盖了如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等多种经典的排序算法,并且通过Java代码进行了详尽的解释和实现。 1. 冒泡排序:这是一种简单的排序方法,通过重复遍历数组,比较相邻...

    各种排序Java代码

    以下将详细讲解标题“各种排序Java代码”中涉及的几种排序方法,包括快速排序、冒泡排序、堆排序和归并排序。 1. **快速排序(Quick Sort)**: 快速排序是一种基于分治思想的高效排序算法,由C.A.R. Hoare在1960...

Global site tag (gtag.js) - Google Analytics