码迷,mamicode.com
首页 > 编程语言 > 详细

java八种排序算法---快速排序

时间:2018-11-08 22:13:55      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:个数   void   pre   子串   style   while   static   快速排序   数列   

    快速排序基本思想:挖坑填数+递归分治

    快速排序使用分治法的策略,把一个串行分成2个子串行,快速排序又是一种分而治之的思想在排序算法是上的典型应用,本质上看,快速排序应该算冒泡排序基础上的递归分治法,快速排序名字简单粗暴,顾名思义就是快而且效率高,它是处理大数据最快的算法之一了。

    算法描述:
1、从数列中任意挑出一个数作为基准(pivot)

2、重新排序,所有比基准大的数放在基准左边,所有比基准大的数放在基准右边,这样排序一遍后该基准就位于数列的中间,这个就被称为分区操作(partition)

3、递归地把小于基准的数列和大于基准的数列进行排序

递归到最底部时,数列的大小是0或1,也就是已经排序好了,这个算法一定会结束,因为每次迭代的时候它至少会把一个元素排到最后的位置去

public static void sort(int[] a, int low, int high) {
    //已经排完
    if (low >= high) {
        return;
    }
    int left = low;
    int right = high;

    //保存基准值
    int pivot = a[left];
    while (left < right) {
        //从后向前找到比基准小的元素
        while (left < right && a[right] >= pivot)
            right--;
        a[left] = a[right];
        //从前往后找到比基准大的元素
        while (left < right && a[left] <= pivot)
            left++;
        a[right] = a[left];
    }
    // 放置基准值,准备分治递归快排
    a[left] = pivot;
    sort(a, low, left - 1);
    sort(a, left + 1, high);
}

 

java八种排序算法---快速排序

标签:个数   void   pre   子串   style   while   static   快速排序   数列   

原文地址:https://www.cnblogs.com/yb90/p/9931947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!