算法练习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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostCSS自学笔记(二)【番外篇二】

图解PostCSS的插件执行顺序 文章其实是一系列的早就写完了. 才发现忘了发在SegmentFault上面, 最早发布于https://gitee.com/janking/Inf... 这次我继续研究PostCSS的插件的执行顺序。 之前有研究过做过假设&#xff0c;在插件列表中&#xff0c;PostCSS的插件执行顺序自上而下…

linux命令详解——iostat

简介 iostat主要用于监控系统设备的IO负载情况&#xff0c;iostat首次运行时显示自系统启动开始的各项统计信息&#xff0c;之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 安装 yum install -y sysstat 语法 i…

highgui基础 OpenCV trackbar

在调试程序或者程序执行时需要调整某个变量的值亦或是参数的值&#xff0c;我们需要一个简单方便的操作&#xff0c;滚动条就是一个非常使用的工具。通过鼠标点击对滚动条进行拖动操作以期实现调整某个参数的值。下面例程参见Opencv 安装目录 samples tutorial_code文件夹。 #i…

chrome浏览器开发模式实现跨域

2019独角兽企业重金招聘Python工程师标准>>> 增加如下参数&#xff0c; --disable-web-security --user-data-dir 启动项变为&#xff1a; "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir 转载于…

C#替换字符串起始/结尾指定的字符串

#region 替换字符串起始位置(开头)中指定的字符串/// <summary> /// 替换字符串起始位置(开头)中指定的字符串 /// </summary> /// <param name"s">源串</param> /// <param name"searchStr">查找的串</param> /…

腐蚀函数cvErode 和 膨胀函数cvDilate

Erode腐蚀&#xff0c; Dilate膨胀&#xff0c;这两个形态学函数总是成对出现&#xff0c;前者可以消除较小的点如噪音&#xff0c;后者可以使不连通的图像合并成块。 void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* elementNULL, int iterations1 ); void cvDi…

Zookeeper和分布式环境中的假死脑裂问题(转)

Zookeeper和分布式环境中的假死脑裂问题 最近和同事聊天无意间发现他们的系统也存在脑裂的问题。想想当初在我们的系统中为了解决脑裂花了非常大的功夫&#xff0c;现在和大家一起讨论下脑裂&#xff0c;假死等等这些问题和解决的方法。 在一个大集群中往往会有一个master存在…

安全

2019独角兽企业重金招聘Python工程师标准>>> 1、不要使用页面变量进行传递值&#xff0c;用session 转载于:https://my.oschina.net/u/2277088/blog/1621841

3D打印材料PLA,ABS对比

转载于:https://www.cnblogs.com/sztom/p/6373910.html

【pyqt5学习】——控件绑定槽函数的同时利用lambda实现传参

两种方法&#xff1a; 1、利用pyqtsignal的emit进行传参 2、connect函数进行传参 self.pushButton.clicked.connect(lambda:self.readZodiacByButtonText(self.pushButton.text())) # 根据按钮上的文字来进行阅读def readZodiacByButtonText(self,text):if self.language &…

lab3

lamp: 在阿里云linux&#xff08;Ubuntu&#xff09;上安装Apache mysql php &#xff1a; apt-get install mysql_server mysql_client php5 php_mysql apache2 系统会提示正确的包的名称 安装ECShop 在本地命令行 scp ecshop.zip rootxxx.xxx.xx.xxx:/var/www/ 把压缩文件拷贝…

【python学习】——pyttsx3库实现文本朗读、音量、音速等调节

import pyttsx3# 初始化朗读引擎 engine pyttsx3.init() # 设置朗读速度 self.engine.setProperty(rate, 120) # text为需要读取的内容 self.engine.say(text) # 不添加下面这句&#xff0c;没有声音 self.engine.runAndWait()pyttsx3其他应用&#xff1a; python pyttsx3实现…

【pyqt5学习】——添加菜单栏动作action,给动作触发triggered绑定事件

1、打开qt-designer工具——视图——勾选上动作编辑器 2、勾选后右下方会出现动作编辑器栏 3、在改面板可以进行已有动作的属性编辑&#xff0c;也可以添加新的动作 4、 鼠标左键选中动作不松开&#xff0c;可以将动作拖到菜单栏 5、给动作绑定事件 self.saveLog.triggered.co…

C# / VB.NET合并PDF指定页

在前面的文章中&#xff0c;我们已经知道如何合并、拆分多个PDF文件&#xff0c;在这篇文章中的合并、拆分PDF文档主要是以方便文档管理的目的来操作文档&#xff0c;在文档查阅、管理及存储上很方便实用。但是我们如果想要合并多个文档中的部分文档页的内容&#xff0c;该如何…

高级异常

一、什么是异常 解析&#xff1a;异常就是在程序的运行过程中所发生的不正常事件 二、Java异常处理是通过5个关键字来解决的&#xff1a;try、catch、finally、&#xff08;前三个是捕获异常&#xff09;throw&#xff08;手动抛出异常&#xff09;、throws&#xff08;声明异常…

【纠错】——错误:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。“+解决方案

目录 问题出现场景 原因 解决方案 问题出现场景 先打开pdf文件&#xff0c;获取pdf文件内容后&#xff0c;利用os.remove()来删除文件&#xff0c;这时候出现错误 os.remove(source_path)PermissionError: [WinError 32] 另一个程序正在使用此文件&#xff0c;进程无法访问。…

Eclipse中自动添加注释

方法一&#xff1a;Eclipse中设置在创建新类时自动生成注释 windows-->preference   Java-->Code Style-->Code Templates     code-->new Java files 编辑它 ${filecomment} ${package_declaration} /** * Author fufu* Time ${date} ${time} * Version 1.…

使用rancher创建负载均衡服务

2019独角兽企业重金招聘Python工程师标准>>> 2台主机&#xff0c;一个server包含2个容器进程&#xff08;可以是多个&#xff09;&#xff0c;一个负载均衡容器&#xff08;貌似是依赖haproxy的&#xff09; 1&#xff0c;创建一个镜像&#xff0c;编辑Dockerfile 创…

Six Basic Functional Areas of Spring

转载于:https://www.cnblogs.com/Brake/p/5440738.html

【pyqt5学习】——登录界面跳转到主界面,登录界面关闭的情况下从主界面跳转回登录界面

目录 一、登录界面长下面这样&#xff0c;由qt designer设计 login.py 二、登录界面 逻辑代码loginLogic.py 三、主界面comsumeType.py 四、主界面逻辑代码comsumeTypeLogic.py 五、登录界面跳转至主界面 六、主界面回到登录界面 一、登录界面长下面这样&#xff0c;由qt d…