Java 快速排序

来源:互联网 发布:剑倚天下魔刃进阶数据 编辑:程序博客网 时间:2024/06/16 00:32

快速排序的思想,就是将一个数组用一个基准值将数组分为两部分,其中一部分的所有数字都比这个基准值大,另一部分都比基准值小。对这两分份采用同样的方法处理,知道最后处理的数组个数为一个,则数组就是有序的。

public class QuickSort {public static void main(String[] args) {int[] arr={3,5,2,1,5,6,6,2,4,7,22,35,77,11,66,2,44,55,33,44,663,64363,235,234,66,25,67,235,6,25};quickSort(arr,0,arr.length-1);for(int a:arr)System.out.print(a+",");}public static void quickSort(int[] arr,int start,int end){if(start>=end)return;//以最左边的数字为基准int keyValue = arr[start];int leftPtr = start;int rightPtr = end;while(leftPtr<rightPtr){//从右往左扫描,当扫描到比基准值大的值,或者左边指针大于右边指针,while(rightPtr>leftPtr&&arr[rightPtr]<=keyValue)rightPtr--;//如果是因为扫描到比基准值大的数字而结束循环,则交换数字if(arr[rightPtr]>keyValue){int temp = arr[rightPtr];arr[rightPtr] = keyValue;arr[leftPtr] = temp;}//从左向右扫描while(leftPtr<rightPtr&&arr[leftPtr]>=keyValue)leftPtr++;if(arr[leftPtr]<keyValue){int temp = arr[leftPtr];arr[leftPtr] = keyValue;arr[rightPtr] = temp;}}quickSort(arr,start,leftPtr-1);quickSort(arr,rightPtr+1,end);}}
输出结果:

64363,663,235,235,234,77,67,66,66,55,44,44,35,33,25,25,22,11,7,6,6,6,5,5,4,3,2,2,2,1,

0 0
原创粉丝点击