博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java快速排序
阅读量:5901 次
发布时间:2019-06-19

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

hot3.png

快速排序的基本概念为:

      找出一个元素作为基准,然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正确位置,排序完成。总结为一句话:快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。

选择基准元:1、固定基准元、2、随机基准元 、3、三数取中

实例代码如下:

package sort;/** * 快速排序 * 快速排序采用了分治策略。就是在一个数组中取一个基准数字,把小的数放基准的左边,大的数放基准的右边。 * 基准左边和右边分别是新的序列。在新的序列中再取一个基准数字,小的放左边,大的放右边。 * 这个里面用到的递归。我们需要三个参数,一个是数组,另外两个是序列的边界 * @author JY */public class QuickSort{    void sort(int num[],int left,int right){        if (left
=num.length){ return 0; } int prio=num[left+(right-left)/2]; //获取数组中间元素的下标 while (left<=right){ //从两端交替向中间扫描 while (num[left]
prio) right--; if (left<=right){ swap(num,left,right); //最终将基准数归位   left++; right--; } } return left; } public void swap(int[] num,int left,int right){ int temp = num[left]; num[left] = num[right]; num[right] = temp; } public static void main(String args[]){ int[] num={7,3,5,1,2,8,9,2,6}; new QuickSort().sort(num,0,num.length-1); for(int n:num) { System.out.print(n+" "); } }}

转载于:https://my.oschina.net/yjktpd/blog/1624105

你可能感兴趣的文章
Spring中使用@Profile指定不同的环境
查看>>
linux下修改/etc/profile文件
查看>>
cropper实现图片剪切上传
查看>>
谈谈java的BlockingQueue
查看>>
20165313 我期望的师生关系
查看>>
CentOS7+CDH5.14.0安装CDH错误排查: HiveServer2 该角色的进程已退出。该角色的预期状态为已启动...
查看>>
GCC
查看>>
The Oregon Trail 俄勒冈之旅
查看>>
Excel VBA连接MySql 数据库获取数据
查看>>
Nginx页面图片错误 ERR_CONTENT_LENGTH_MISMATCH
查看>>
SQL Server-表表达式基础回顾(二十四)
查看>>
DAO层,Service层,Controller层,View层
查看>>
Developing a Service Provider using Java API(Service Provider Interface)(转)
查看>>
LINQ高级编程 笔记
查看>>
Android 应用开发推荐书单
查看>>
自定义有监听器的ScrollView
查看>>
BAE Flask UEditor 使用七牛云
查看>>
关联的特殊应用
查看>>
Bootstrap系列 -- 15. 下拉选择框select
查看>>
【转载】无限级分类的简单实例
查看>>