快速排序

  快排和插入,选择,等等都是最重要的排序方式。快排虽然简单,但是其中蕴含了很多基础而又重要的计算机原理,首先是递归性。 与插入选择不一样,快排天生是一个递归的算法。

首先我们来讨论一下快排的算法原理,这是一个应用分治原理的算法,该算法的实现过程为:

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));  
}  
}

 

posted on 2018-03-30 10:10  一个新人代码农民  阅读(116)  评论(0)    收藏  举报

导航