此时再执行第三步的时候就发现I=J,从而结束一躺快速排序,那么经过一躺快速排序之后的结果是:27 38 13 49 76 97 65,即所以大于49的数全部在49的后面,所以小于49的数全部在49的前面。快速排序就是递归调用此过程——在以49为中点分割这个数据序列,分别对前面一部分和后面一部...
首先我们选择一个中间值middle程序中我们使用数组中间值,然后 把比它小的放在左边,大的放在右边(具体的实现是从两边找,找到一对后交换)。然后对两边分别使 用这个过程(最容易的方法——递归)。 public class KuaiSu { public static void main(String[] args) { int a[]={5,8,3,7,2...
1.找基准值,设Pivot = a[0]2.分区(Partition):比基准值小的放左边,大的放右边,基准值(Pivot)放左部与右部的之间。3.进行左部(a[0] - a[pivot-1])的递归,以及右部(a[pivot+1] - a[n-1])的递归,重复上述步骤。排序效果:
public class demo11 { public static void main(String[] args) { // TODO Auto-generated method stub QuickSort quick = new QuickSort();int arr[] = { 4, 2, 6, 1, 5, 0, 8, -1 };quick.Sort(arr, 0, arr.length-1);for(int i:arr)System.out.println(i);} } class ...
以下是快速排序算法:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率...