算法练习5---快速排序Java版
基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
例如 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版相关推荐
- java 堆排序算法_堆排序算法的讲解及Java版实现
这篇文章主要介绍了堆排序算法的讲解及Java版实现,堆排序基于堆这种数据结构,在本文中对堆的概念也有补充介绍,需要的朋友可以参考下 堆是数据结构中的一种重要结构,了解了"堆"的概念 ...
- 算法--猫扑素数--java版
算法–猫扑素数–java版 简介 猫扑素数: 形如以 2 开头, 之后跟任意多个 3 的十进制整数如果是个素数, 则它是猫扑素数. 如 2, 23, 233, 2333, 23333 都是猫扑素数, ...
- 分布式主键解决方案----Twitter 雪花算法的原理(Java 版)
SnowFlake 雪花算法 对于分布式系统环境,主键ID的设计很关键,什么自增intID那些是绝对不用的,比较早的时候,大部分系统都用UUID/GUID来作为主键,优点是方便又能解决问题,缺点是插入 ...
- 数据结构与算法之排序(Java版)
文章目录 时间复杂度 冒泡排序 算法介绍: 代码实现: 时间性能测试:9s 9355ms 选择排序 思路解析: 代码实现: selectSort方法 Main方法 时间性能测试:3s 2650ms 插 ...
- 【图】Dijkstra(迪杰特斯拉)算法、左神Java版
什么是Dijkstra 给定一个图,从某点出发到达某点给出最短的路径 比如上述图,从A出发,到其余点的最短路径,返回这样的表 思路 我们先用一个表格记录A到其余点的距离,初始值是A到A的距离为0,与其 ...
- 算法图解之快速排序(JAVA版本)
阅读这篇文章就证明你已经开始踏上了算法的修仙之路,接下来我会两天一更,介绍图解算法里面的算法的实现, 适合Java程序员阅读. 文章目录 前言 一.什么是分治思想? 1.核心思想 2.案例展示 二.快 ...
- long 雪花算法_雪花算法(SnowFlake)Java版
算法原理 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截, ...
- 蓝桥杯 ALGO-13 算法训练 拦截导弹 Java版
问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- 排序算法---选择排序(java版)
简单选择排序 原理 选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间.但是选择排序每次会从排序区间中找到最小的元素,将其放到已排序区间的末尾. 简单选择排序执 ...
- 排序算法---计数排序(java版)
计数排序 原理 计数排序(Counting Sort) 使用了一个额外的数组 C,其中第 i 个元素是待排序数组A 中值等于 i 的元素的个数.然后根据数组 C 来将 A 中的元素排到正确的位置.其实 ...
最新文章
- Windows8应用生命周期 Metro Style Apps Lifecycle
- 2020-11-30(为什么字符串可以赋值给字符指针变量)
- iec60870-5-104通讯协议编程_三菱FX编程口通讯协议1——协议解读
- 网络爬虫之java基础(Ⅰ)
- ContentProvider与ContentResolver
- Android之Button按钮
- 【Java编程思想笔记】-集合1
- 11 种方法教你用 Python 高效下载资源
- 阿里云罗庆超:我为什么写《对象存储实战指南》这本书
- 教你阅读vue源码的正确姿势,看完就学废!
- Cannot access a disposed object. A common cause of this error is disposing a context that ...问题解决
- iPhonexs文件连接服务器,iPhonexs黑屏了教你如何快速解决!
- vue中使用语音提示
- chromium 浏览器多进程架构小科普
- 微信小程序——消息推送配置
- 基于逆变器的有源滤波器控制,光伏Mppt采用粒子群算法,ip iq谐波检测,电压电流双闭环控制,电流环采样pi控制和重复控制进行对比,谐波含量低
- ES聚合查询报 can‘t load fielddata on because fielddata is unsupported on fields of type x,use doc value..
- 福州室外婚纱摄影哪家好?
- 如何正确使用Pushy 推送IOS SDK
- 手把手教学51单片机第七课 | AT24C02的I²C总线数据传输
热门文章
- 机器学习 多变量回归算法_如何为机器学习监督算法识别正确的自变量?
- java 回归遍历_回归基础:代码遍历
- 为什么苹果有2500亿美刀不用,偏偏要借钱?
- 九十年代以来的文学事变与60后70后80后作家的写作之三
- 在看世界杯的闲暇看看电视剧《长恨歌》
- java随机星星怎么闪_canvas画随机闪烁的星星
- pid调节软件_非常实用的PID算法和PID控制原理
- pg与oracle区别,PostgresQL 学习记录之与oracle区别(一)
- php输出查询mysql总数_PHP查询语句,如何返回总记录数??
- 计算机地址码特点,电脑摇头灯的地址码的设定问题你必须要注意的