快速排序
快排和插入,选择,等等都是最重要的排序方式。快排虽然简单,但是其中蕴含了很多基础而又重要的计算机原理,首先是递归性。 与插入选择不一样,快排天生是一个递归的算法。
首先我们来讨论一下快排的算法原理,这是一个应用分治原理的算法,该算法的实现过程为:
1,取数据集的一个基准数
2,把比基准数大的放右边,小的放左边
3,递归的对左右区间分别重复1,2的步奏,直到排完
具体的实现过程中,我们来深度解析这个算法,这里我读了一位大神的文章,写的真的非常的棒 https://blog.csdn.net/morewindows/article/details/6684558,大家有空也可以阅读一下他的博客,非常的清晰明确。
因为懒得原因,这里就不实际画图说明原理了,总之这是一个应用交换方法的算法,下面是代码:
import java.util.Arrays; public class quickSort{ public static void quickSort(int[] a, int l, int r) { int beign = l; int end = r; int provit=a[beign]; while(beign<end) { while (a[end]>=provit&&beign<end) { --end; } a[beign]=a[end]; while (a[beign]<=provit&&beign<end) { ++beign; } a[end]= a[beign]; } a[beign] = provit; if (l < end) { // 递归排序游标的左边 quickSort(a, l, end - 1); } if (beign < r) { // 递归排序游标的右边 quickSort(a, beign + 1, r); } } public static void main(String[] args) { // TODO Auto-generated method stub int[] a = new int[] { 2, 1, 6, 7, 8, 5, 3, 5 }; quickSort(a, 0, a.length - 1); System.out.println(Arrays.toString(a)); } }
浙公网安备 33010602011771号