`

排序算法java实现快速排序

 
阅读更多

 

public class QuickSort {

//快速排序:

//基本思想:(分治)

//先从数组中取出一个数作为key值;

//将比这个数小的数全部放在它的左边,

//大于或等于它的数全部放在它的右边,

//对左右两个小数组重复上述步骤,直到各个区间只有1个数

 

//辅助理解:(挖坑填数)

//初始时:i=0;j=8;key=6

//由于已经将a[0]中的数保存到key中,可以理解成在数组a[0]上挖了个坑,可以将其他数据填充到这里来。

//从j开始向前查找一个比key小的数,当j=8,符合条件,a[0]=a[8];i++;

//将a[8]挖出再填上一个坑a[0]中。

//这样一个坑a[0]就被搞定了,单有形成了一个新坑a[8]。

//再找个数字来天a[8]这个坑,

//这次从i开始向后找一个大于key的数,当i=4,符合条件,a[8]=a[4];j--;将a[4]挖出填到上一个坑中。

//此时i=4;j=8;key=6;

//再重复上面的步骤,先从后向前找,再从前向后找

//从j开始向前找,当j=5时符合条件,将a[5]挖出填到上一个坑中,a[3]=a[5];i++;

//从i开始向后查找,当i=5时,由于i==j退出,此时i=j=5,而a[5]刚好是上次挖的坑,将key填入a[5]

//最终可以看出a[5]前面的数字都小于它,a[5]后面的数字都大于它,然后再对a[0]到a[4]、a[6]到a[8]这两个子区间重复上述步骤

 

//注意:key值的选取可以有多重形式,例如中间数或者随机数,分别对算法的复杂度产生不同的影响。

 

 

//平均时间复杂度:O(nlogn)

 

public static void main(String[] args) {

int[] arr = new int[]{6,2,4,1,9,3,6,7,0};

System.out.println("排序前=====");

print(arr);

System.out.println("");

System.out.println("排序后=====");

quickSort(arr,0,arr.length-1);

print(arr);

}

public static void quickSort(int[] arr,int left,int right){

if(left>=right)

return ;

int i = left;

int j = right;

int key = arr[left];//选择第一个数作为key

 

while(i<j){

 

while(i<j && arr[j]>=key)//从右向左找

j--;

if(i<j){

arr[i] = arr[j];

i++;

}

 

 

while(i<j && arr[i]<key)//从左向右找

i++;

if(i<j){

arr[j] = arr[i];

j--;

}

}

 

//i=j

arr[i] = key;

quickSort(arr,left,i-1);//递归调用

quickSort(arr,i+1,right);//递归调用

 

 

}

public static void print(int[] arr){

for(int i=0; i<arr.length; i++){

System.out.print(arr[i]+",");

}

}

}

 

分享到:
评论

相关推荐

    快速排序算法的java实现

    在Java中实现快速排序,我们通常会定义一个`quickSort()`方法,该方法接受一个整数数组作为参数。快速排序的核心在于选择一个基准元素(pivot),并重新排列数组使得所有小于基准的元素都在其前,所有大于基准的元素...

    Java实现快速排序算法+编程知识+技术开发

    Java实现快速排序算法+编程知识+技术开发; Java实现快速排序算法+编程知识+技术开发; Java实现快速排序算法+编程知识+技术开发; Java实现快速排序算法+编程知识+技术开发; Java实现快速排序算法+编程知识+技术...

    分别使用Java和Python实现快速排序算法.zip

    快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法....

    各种排序算法比较(java实现)

    本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...

    快速排序算法JAVA实现

    在Java中,我们可以创建一个名为`Qsort`的类来实现快速排序。这个类包含两个主要方法:`sort`和`partition`。`sort`方法是快速排序的递归入口,`partition`方法则是快速排序的核心,它负责将数组分为两部分,并返回...

    快速排序算法java代码

    "快速排序算法java代码" 快速排序算法是由Tony Hoare在1960年提出的一种排序算法,它的平均时间复杂度为O(n log n),是目前最快的排序算法之一。下面我们将详细地讲解快速排序算法的java代码实现。 快速排序算法的...

    基数排序算法 java实现

    然而,它并不适用于浮点数或非整数类型的数据,且如果数据量较小,基数排序可能不如其他简单排序算法(如快速排序或归并排序)高效。在实际应用中,我们需要根据具体情况来选择最适合的排序算法。

    各种排序算法java实现

    在Java编程语言中,排序算法是数据结构与算法学习中的重要组成部分。...在Java开发中,除了这些基础排序算法,还有更高级的排序算法如快速排序、归并排序、堆排序等,它们在效率和复杂度上都有更深入的研究和应用。

    常见的七大排序算法Java实现.zip

    本压缩包"常见的七大排序算法Java实现.zip"包含了七种经典的排序算法在Java语言中的实现。尽管文件列表中并未明确列出每种排序算法的名称,但根据常规,这七大排序算法可能包括冒泡排序、插入排序、选择排序、快速...

    java 快速排序 折半查找的界面实现 (递归与分治法)

    总的来说,快速排序和折半查找是计算机科学中不可或缺的算法,通过递归和分治策略,可以在Java中高效地实现这些算法,并结合界面设计,为用户提供直观的交互体验。在实际项目中,理解和掌握这些算法有助于优化数据...

    用java实现快速排序

    根据给定文件的信息,本文将围绕“用Java实现快速排序”的主题进行展开,不仅解析标题与描述中的核心知识点,还会对部分代码示例进行解读,最后结合这些信息给出一个完整的快速排序算法实现。 ### 快速排序算法简介...

    常用排序算法java演示

    本文将深入探讨标题"常用排序算法java演示"中涉及的知识点,包括排序算法的原理、Java实现方式以及其在实际应用中的图形演示。 首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一...

    排序算法JAVA实现,eclipse+txt

    快速排序是一种高效的排序算法,采用分治策略。选择一个基准值,将数组分为两部分,使得一部分的所有元素都小于基准,另一部分的所有元素都大于基准,然后对这两部分递归进行快速排序。Java实现时,需要使用递归...

    内部排序算法java实现

    这里我们将深入探讨Java实现的几种内部排序算法,包括希尔排序、快速排序、堆排序、归并排序、冒泡排序、插入排序和选择排序。 首先,希尔排序是一种基于插入排序的算法,通过将原始数组分解成多个子序列来提高效率...

    JAVA冒泡排序和快速排序算法

    在JAVA中,实现这两种排序算法可以使用面向对象的特性,创建一个类如`MaopaoKuaisu.java`,在这个类中定义两个方法,分别实现冒泡排序和快速排序。类的结构可能如下: ```java public class MaopaoKuaisu { public...

    Java 快速排序算法

    Java 快速排序,目前来说效率很高的一种排序算法,好理解。

    IT面试笔试-各种排序算法Java实现

    【IT面试笔试中的排序算法Java实现】 在IT面试和笔试中,掌握各种排序算法的实现是必不可少的技能。本文将详细介绍几种经典的排序算法,并提供Java语言的实现代码,包括冒泡排序、插入排序、选择排序和快速排序。...

    JAVA实现快速排序

    JAVA实现快速排序 快速排序是一种高效的排序算法,它的实现可以分为两个部分:基本思想和复杂度分析。在基本思想中,快速排序采用“分而治之”的思想,把大的拆分为小的,小的拆分为更小的,直到序列中的所有记录均...

Global site tag (gtag.js) - Google Analytics