`

快速排序

阅读更多

 

/**
 * 快速排序:是对冒泡排序的改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,
 * 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
 *
 * 找出a[0]放置的位置(也就是两部分的中间)
 */
public class QuickSort {

 int arr[] ={2,1,5,4,8,23,20,2443,2342,343342,9000,22,4,54,3,20000};
 
 public static void main(String[] args) {
  
  QuickSort qs=new QuickSort();
  int low=0; //固定为0
  int high=qs.arr.length-1; //数组的长度-1
  
  qs.quickSort(low, high);
  
  for(int i=0;i<qs.arr.length;i++){
   System.out.print(qs.arr[i]+" ");
  }
 }
 /**
  * 找出两部分分隔点
  * @param low  固定值0
  * @param high
  * @return
  */
 int mid(int low,int high){
  int val=arr[low];

  while(low<high){
   while(low<high && val<=arr[high])
    high--;
    arr[low]=arr[high];
   while(low<high && val>=arr[low])//注意>与>=区别,为什么此处arr[low]与arr[high]会产生不一样的结果?
    low++;
    arr[high]=arr[low];
  }
  arr[low]=val;
  return low;
 }
 
 /**
  * 快速排序算法
  * @param low 
  * @param high
  */
 void quickSort(int low,int high){
  if(low<high){//如果没有low<high,java.lang.StackOverflowError
   int middle=mid(low, high);//(1)数组右边的比左边的大,两部分中间点middle
   quickSort(low,middle);
   quickSort(middle+1,high);
  }
 }
}

分享到:
评论

相关推荐

    全版快速排序推荐PPT.ppt

    根据提供的文件信息,我们可以深入探讨快速排序这一算法的相关知识点,包括其原理、编程思路、涉及的知识点以及具体的实现方式。 ### 快速排序原理 快速排序是一种高效的排序算法,属于**分而治之**策略的一种典型...

    随机快速排序

    * 快速排序3.0 —— 随机快排,时间复杂度收敛于 O(NlogN) */ public class QuickSort { /** * * @param arr 需要排序的数组 * @param L 需要排序部分的左边界 * @param R 需要排序部分的右边界 */ public ...

    随机快速排序 算法设计与分析实验报告

    (1)用随机快速排序的方法,对输入的数值以从大到小的顺序进行快速排序。 (2)对随机快速排序和冒泡排序这两种排序方法进行比较,测试其在不同数值大小的情况下算法运行的时间复杂度。 二、 实验要求 快速排序...

    tyboot-快速排序

    快速排序是一种高效的排序算法,由计算机科学家托尼·霍尔(Tony Hoare)在1960年提出,也被称为分区交换排序(partition-exchange sort)。它采用了分而治之的策略,通过一个划分操作将待排序的数组分为两个部分,...

    快速排序算法快速排序算法PDF

    快速排序是一种高效的排序算法,它在许多实际应用中表现出色,尤其是在处理大量数据时。由托尼·霍尔(C.A.R.Hoare)于1962年提出后,快速排序迅速成为计算机科学领域内一个重要而广泛研究的算法。它的基本原理是...

    c++ 快速排序

    快速排序c++实现代码 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归...

    易语言快速排序

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它基于分治法的策略,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此...

    TEST_0922-快速排序

    快速排序是一种高效的排序算法,由C. A. R. Hoare于1960年提出,其基本思想是分治法。快速排序的核心思想在于选择一个基准元素,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分...

    C++实现快速排序(Quicksort)算法

    C++实现快速排序(Quicksort)算法 一、基本思想: 快速排序(Quicksort)算法的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对...

    Test_11.3-快速排序

    快速排序是一种高效的排序算法,由C. A. R. Hoare在1960年提出。它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以...

    C语言简单实现快速排序

    C语言简单实现快速排序 快速排序是一种不稳定排序,时间复杂度为O(n·lgn),最坏情况为O(n2);空间复杂度为O(n·lgn)。这种排序方式是对于冒泡排序的一种改进,它采用分治模式,将一趟排序的数据分割成独立的两部分...

    common-starter-快速排序

    快速排序是一种高效的排序算法,其基本思想是分治法。通过一个基准值将数组分成两部分,一部分的所有数据都比另一部分的所有数据要小,然后递归地对这两部分继续进行快速排序,以达到整个序列变成有序序列。 快速...

    快速排序ppt

    几张树图快速掌握快速排序的方法,上课用的没有程序可以参考一下

    Test_10.28-快速排序

    快速排序是一种高效的排序算法,由C. A. R. Hoare在1960年提出,采用分治法策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。其基本思想是:先从数列中选取一个数作为基准数,然后将所有比这...

    js快速排序的实现代码

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer),即把一个大问题分解成若干个小问题来解决。在快速排序中,我们选择一个元素作为“基准”...

    排序算法:快速排序

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是利用分治策略,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对...

    快速排序-高效的排序算法pdf

    快速排序算法是由英国计算机科学家托尼·霍尔于1960年提出的,是一种高效的排序算法,广泛应用于计算机科学领域。其排序速度非常快,平均时间复杂度为O(nlogn),在数据量较大时其优势尤为明显。快速排序的主要原理是...

    php快速排序

    php递归与非递归快速排序写法php递归与非递归快速排序写法php递归与非递归快速排序写法php递归与非递归快速排序写法

Global site tag (gtag.js) - Google Analytics