博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java八种排序算法---快速排序
阅读量:4915 次
发布时间:2019-06-11

本文共 932 字,大约阅读时间需要 3 分钟。

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

    快速排序使用分治法的策略,把一个串行分成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);}

 

转载于:https://www.cnblogs.com/yb90/p/9931947.html

你可能感兴趣的文章
我的前端学习路线
查看>>
白帽子讲web安全读书笔记(Ⅰ)
查看>>
九.延迟加载
查看>>
实际工作规范和案例框架
查看>>
SQL Server datetime类型转换超出范围的报错
查看>>
XMPP框架 微信项目开发之XMPP配置——MySQL数据库、MySQLworkbench、Openfire服务器的安装与配置...
查看>>
不说狠话,不做软事
查看>>
单端IO标准
查看>>
self.a与_a访问区别
查看>>
《Code Complete》ch.16 控制循环
查看>>
线程安全与资源共享
查看>>
(转)在Linux上的使用开源C++日志库 ---log4cplus
查看>>
清空文件内容
查看>>
Linux系统安装telnet以及xinetd服务
查看>>
火狐浏览器查找配置文件路径
查看>>
向android虚拟机中push文件提示Read-only file system
查看>>
nmon与nmonanalyser 系统性能分析(图表)利器非草稿 分类: ...
查看>>
SQL语句
查看>>
Codeforces 713C Sonya and Problem Wihtout a Legend(单调DP)
查看>>
POJ 1201 Intervals(差分约束)
查看>>