上一篇复习的是交换排序中的冒泡排序,这一篇复习快速排序,快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。
快速排序的思想:找一个基准位,它前面的元素都小于它,它后面的元素都大于它,通过两个哨兵i,j,i是这个基准位的左边进行遍历,保证走过来的每个元素都比基准位值小,j是基准位的右边进行遍历,保证走过来的元素都比基准位值大
java代码实现如下:
public class QuickSort {
static void quicksort(int[] a,int low,int high){
int n = a.length;
int i=low;
int j=high;
int temp = a[low]; //记录基准位置,放到临时变量temp中
while(i<j){
//必须从右边开始扫描,因为左边正好有个缺口
while(i<j&&a[j]>temp){
j--;//放过
}
if(i<j){
a[i]=a[j];
i++;//放过,并开始左端循环
}
while(i<j&&a[i]<temp)
{
i++;//放过
}
if(i<j){
a[j]=a[i];
j--;
}
}
a[i]=temp;
if(i>low) quicksort(a,low,i-1);
if(j<high) quicksort(a,j+1,high);
}
public static void main(String[] args) {
int[] a = {2,5,6,4,1,0,-2,-3,-4};
quicksort(a,0,8);
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
}
}
分享到:
相关推荐
排序算法如冒泡排序、插入排序、选择排序、快速排序、归并排序等,它们在Java中都有相应的实现方式。查找算法如线性查找、二分查找、哈希查找等,是提高数据访问效率的关键。 最后,数据结构的学习离不开实际应用。...
这篇博客"java源码中的数据结构 - 插入排序,快速排序 (附可供调试的源码)"聚焦于两种经典的排序算法:插入排序和快速排序。这些算法在实际编程中广泛应用,尤其在处理大量数据时,对性能优化有着显著的影响。 首先...
10. **排序与查找**:快速排序、归并排序、冒泡排序、二分查找等经典算法是每个Java开发者必须掌握的。理解它们的工作原理和适用场景,有助于编写高效的代码。 通过深入学习和实践这些Java数据结构,不仅能提升编程...
【Java基础复习笔记10数据结构-排序二叉树】 排序二叉树是一种特殊类型的二叉树,其每个节点的数据值满足以下特性:对于任意节点,其左子树中的所有节点值都小于该节点,而右子树中的所有节点值都大于或等于该节点...
### Java基础数据结构—排序算法 #### 排序的重要性与应用场景 排序算法是计算机科学中的一个核心主题,它不仅在理论研究中占有重要的地位,也是实际应用中不可或缺的一部分。无论是在数据库管理系统的查询优化,...
《数据结构(Java版本)》这本书正是为此目的而编写,旨在将理论与实际编程相结合,通过Java语言来实现各种经典的数据结构。 首先,书中的基础部分会介绍数据结构的基本概念,如数组、链表、栈和队列。数组是最基本...
7. **排序算法**:快速排序、归并排序、冒泡排序、选择排序、插入排序、堆排序等都是数据结构中常见的排序算法,Java的Arrays类提供了多种排序方法。 8. **递归与分治**:递归是解决问题的一种方法,通过自我调用来...
7. 排序算法:包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等,它们对数组或其他线性结构进行排序,Java提供了`Arrays.sort()`方法对数组进行排序。 课后习题部分可能涵盖上述数据结构的理论问题...
【数据结构与排序算法在Java中的应用】 在计算机科学中,数据结构是组织和存储数据的方式,而排序算法则是对这些数据进行排列的策略。在Java编程中,掌握各种排序算法对于提高程序效率至关重要。本篇文章将深入探讨...
在Java面试中,数据结构是不可或缺的一个重要环节,因为它直接影响到程序的效率和设计质量。本资料包"面试-Java一些常见面试题+题解之数据结构-DataStructure.zip"聚焦于Java中的数据结构,旨在帮助求职者更好地准备...
### Java 实现数据结构常见排序算法及详解 #### 排序算法概述 排序算法是计算机科学中的基础概念之一,主要用于将一系列数据按照特定规则进行排列。根据数据处理方式的不同,排序算法大致分为两大类:比较排序与非...
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
数据结构与算法是计算机科学的基础,对于任何编程语言来说,理解和掌握它们都是至关重要的,特别是对于Java语言。在这个“数据结构与算法--Java语言描述”的资料中,我们有望深入理解这些核心概念,并通过Java语言来...
Java作为广泛应用的编程语言,其在实现数据结构和算法时有着丰富的库支持和优秀的可读性。下面将对标题和描述中提到的一些关键知识点进行详细解释。 1. **数据结构**: - **稀疏数组**:当大量数据中大部分为零或...
Java数据结构和算法.pdf 资源摘要信息是关于Java数据结构和算法的知识点总结,涵盖了数组、栈与队列、链表、递归、哈希表、高级排序、二叉树、红黑树、堆、带权图等数据结构和算法概念。 一、数组 * 数组是相同...
本资料包“java-数据结构代码实现”提供了使用Java语言实现数据结构的实例,旨在帮助开发者加深对数据结构的理解并提升编程技能。 1. **链表**:链表是一种动态数据结构,其元素在内存中不是顺序排列的。Java中的...
以下是基于标题“数据结构与算法-java”及描述中提到的“数据结构与算法分析_Java语言描述高清版(第2版)1.pdf”所涵盖的一些关键知识点: 1. **数据结构**: - **数组**:最基础的数据结构,存储固定大小的同类型...
数据结构与算法是计算机科学的基础,对于任何编程语言来说,理解和掌握它们都是至关重要的,特别是对于Java开发者。这本书“数据结构与算法经典问题解析-Java语言描述”旨在帮助读者深入理解这些概念,并通过具体的...