基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

例如 3 1 5 2 7 9 3 0

首先以3为基准数,基准数的意思就是以这个数为参考,其他数和它做比较,现在例如有两个人,分别从左边和右边开始找,右边的人要找到比基准数3小的数,左边的人找比基准数3大的数,找到以后进行交换,右边的人先开始找,例如上面的数组,右边的人从0开始找,0比3小,记录下这个数字,左边的人从3开始找,找到5比3大,  ,现在把这两个数交换位置得到新的数组3 1 0 2 7 9 3 5,右边的人继续重复上述步骤找到2,左边的人到了2也没有比3大的数字,于是两个人在数字2相遇了,就把基准数3和这个2交换,得到新的数组2 1 0 3 7 9 3 5,把3看做分割点,整个数组分为两部分,左边的2 1 0和右边的7 9 3 5重复上述步骤继续排序

java代码如下:

public class QuickSort {public static void main(String[] args) {// TODO Auto-generated method stub
QuickSort qs = new QuickSort();int[] score = {10,9,8,7,6,5,4,3,2,1};qs.quickSort(score,0,score.length-1);for(int i=0;i<score.length;i++){System.out.print(score[i]+"   ");}}public void quickSort(int[] a,int left,int right){int i,j,t,temp;if(left>right)return;i= left;j = right;temp = a[left];while(i!=j){while(a[j]>=temp && i<j)j--;while(a[i]<=temp && i<j)i++;if(i<j){        t=a[i];a[i]=a[j];a[j]=t;}}a[left]=a[i];a[i]=temp;quickSort(a,left,i-1);quickSort(a,i+1,right);}}

执行结果:

1   2   3   4   5   6   7   8   9   10 

转载于:https://www.cnblogs.com/paopaoquan/p/6368204.html

算法练习5---快速排序Java版相关推荐

  1. java 堆排序算法_堆排序算法的讲解及Java版实现

    这篇文章主要介绍了堆排序算法的讲解及Java版实现,堆排序基于堆这种数据结构,在本文中对堆的概念也有补充介绍,需要的朋友可以参考下 堆是数据结构中的一种重要结构,了解了"堆"的概念 ...

  2. 算法--猫扑素数--java版

    算法–猫扑素数–java版 简介 猫扑素数: 形如以 2 开头, 之后跟任意多个 3 的十进制整数如果是个素数, 则它是猫扑素数. 如 2, 23, 233, 2333, 23333 都是猫扑素数, ...

  3. 分布式主键解决方案----Twitter 雪花算法的原理(Java 版)

    SnowFlake 雪花算法 对于分布式系统环境,主键ID的设计很关键,什么自增intID那些是绝对不用的,比较早的时候,大部分系统都用UUID/GUID来作为主键,优点是方便又能解决问题,缺点是插入 ...

  4. 数据结构与算法之排序(Java版)

    文章目录 时间复杂度 冒泡排序 算法介绍: 代码实现: 时间性能测试:9s 9355ms 选择排序 思路解析: 代码实现: selectSort方法 Main方法 时间性能测试:3s 2650ms 插 ...

  5. 【图】Dijkstra(迪杰特斯拉)算法、左神Java版

    什么是Dijkstra 给定一个图,从某点出发到达某点给出最短的路径 比如上述图,从A出发,到其余点的最短路径,返回这样的表 思路 我们先用一个表格记录A到其余点的距离,初始值是A到A的距离为0,与其 ...

  6. 算法图解之快速排序(JAVA版本)

    阅读这篇文章就证明你已经开始踏上了算法的修仙之路,接下来我会两天一更,介绍图解算法里面的算法的实现, 适合Java程序员阅读. 文章目录 前言 一.什么是分治思想? 1.核心思想 2.案例展示 二.快 ...

  7. long 雪花算法_雪花算法(SnowFlake)Java版

    算法原理 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截, ...

  8. 蓝桥杯 ALGO-13 算法训练 拦截导弹 Java版

    问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  9. 排序算法---选择排序(java版)

    简单选择排序 原理 选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间.但是选择排序每次会从排序区间中找到最小的元素,将其放到已排序区间的末尾. 简单选择排序执 ...

  10. 排序算法---计数排序(java版)

    计数排序 原理 计数排序(Counting Sort) 使用了一个额外的数组 C,其中第 i 个元素是待排序数组A 中值等于 i 的元素的个数.然后根据数组 C 来将 A 中的元素排到正确的位置.其实 ...

最新文章

  1. Windows8应用生命周期 Metro Style Apps Lifecycle
  2. 2020-11-30(为什么字符串可以赋值给字符指针变量)
  3. iec60870-5-104通讯协议编程_三菱FX编程口通讯协议1——协议解读
  4. 网络爬虫之java基础(Ⅰ)
  5. ContentProvider与ContentResolver
  6. Android之Button按钮
  7. 【Java编程思想笔记】-集合1
  8. 11 种方法教你用 Python 高效下载资源
  9. 阿里云罗庆超:我为什么写《对象存储实战指南》这本书
  10. 教你阅读vue源码的正确姿势,看完就学废!
  11. Cannot access a disposed object. A common cause of this error is disposing a context that ...问题解决
  12. iPhonexs文件连接服务器,iPhonexs黑屏了教你如何快速解决!
  13. vue中使用语音提示
  14. chromium 浏览器多进程架构小科普
  15. 微信小程序——消息推送配置
  16. 基于逆变器的有源滤波器控制,光伏Mppt采用粒子群算法,ip iq谐波检测,电压电流双闭环控制,电流环采样pi控制和重复控制进行对比,谐波含量低
  17. ES聚合查询报 can‘t load fielddata on because fielddata is unsupported on fields of type x,use doc value..
  18. 福州室外婚纱摄影哪家好?
  19. 如何正确使用Pushy 推送IOS SDK
  20. 手把手教学51单片机第七课 | AT24C02的I²C总线数据传输

热门文章

  1. 机器学习 多变量回归算法_如何为机器学习监督算法识别正确的自变量?
  2. java 回归遍历_回归基础:代码遍历
  3. 为什么苹果有2500亿美刀不用,偏偏要借钱?
  4. 九十年代以来的文学事变与60后70后80后作家的写作之三
  5. 在看世界杯的闲暇看看电视剧《长恨歌》
  6. java随机星星怎么闪_canvas画随机闪烁的星星
  7. pid调节软件_非常实用的PID算法和PID控制原理
  8. pg与oracle区别,PostgresQL 学习记录之与oracle区别(一)
  9. php输出查询mysql总数_PHP查询语句,如何返回总记录数??
  10. 计算机地址码特点,电脑摇头灯的地址码的设定问题你必须要注意的