算法练习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,一经查实,立即删除!

相关文章

OPENCV回调函数

OPENCV回调函数 回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其所指向的函数时&#xff0c;我们就说这是回调函数。回调函数不是由该函数的实现方法直接调用…

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

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

【Python学习】——实现文本的朗读(pyttsx3)

import pyttsx3engine = pyttsx3.init() engine.say(三角形)engine.runAndWait() 1、导入第三方库 import pyttsx32、创建朗读器 engine = pyttsx3.init() 3、输入需要朗读的文本 engine.say(三角形) 4、开始朗读并且发声(这一步不能少,不然没有声音) engine.runAndWait() 参…

linux命令详解——iostat

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

highgui基础 OpenCV trackbar

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

汇编 if else

知识点&#xff1a; if else 逆向还原代码一、了解if else结构 sub esp,8 00401029 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0040102C |. 3B45 F8 CMP EAX,DWORD PTR SS:[EBP-8] 0040102F |. 7E 10 JLE SHORT ifelse01.00401041 //表示 else部…

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 转载于…

【纠错】——QThread: Destroyed while thread is still running

目录 错误 出现场景 解决方案 原始代码 修改后的代码 错误 QThread: Destroyed while thread is still running 出现场景 在对目标缺陷检测的GUI设计的时候&#xff0c;为了避免界面的卡顿&#xff0c;于是想着利用线程QThread来解决这个问题&#xff0c;但是做好后&#xf…

Java怎样处理EXCEL的读取

须要包&#xff1a;poi-3.5.jar、poi-ooxml-3.5.jar 实例&#xff1a; [java] view plaincopy public class ProcessExcel { private Workbook wb null; private Sheet s null; private Row row null; public ProcessExcel(String filePath) …

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…

spring cloud gateway的stripPrefix配置

序 本文主要研究下spring cloud gateway的stripPrefix配置 使用zuul的配置 zuul:routes:demo:sensitiveHeaders: Access-Control-Allow-Origin,Access-Control-Allow-Methods path: /demo/**stripPrefix: trueurl: http://demo.com.cn/ 复制代码这里的stripPrefix默认为true…

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

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

【pyqt5学习】【python学习】——通过py文件来执行命令行指令

目录 1、利用os模块 2、爬虫命令 注意 1、利用os模块 os.system("scrapy crawl search") 2、爬虫命令 from scrapy.cmdline import execute # 将命令的每个单词存进一个列表传给execute() execute("scrapy crawl search".split()) # 相当于在终端…

JSP内置对象详解

转自http://www.cnblogs.com/oumyye/p/4240272.html   在JSP中为了简化用户的开发&#xff0c;提供了九个内置对象&#xff0c;这些内置对象将由容器为用户进行实例化&#xff0c;而用户直接使用即可&#xff0c;而不用像在java中那样&#xff0c;必须通过关键字new进行实例化…

cvMorphology形态学原理解析及源码分析

⑴ 图像形态学处理的概念...1 ⑵ 二值图像的逻辑运算...3 ⑶ 膨胀和腐蚀...4 (4) 高级形态学变换...8 (5) 细化...10 ⑴ 图像形态学处理的概念 数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量&#xff0c;比如边…

安全

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

lua_string_pattern

两大特点&#xff1a; 1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,... 2. string库中所有的function都不会直接操作字符串&#xff0c;而是返回一个新的字符串。 库函数&#xff1a; 1、string.len&#xff0c;string.rep&#xff0c;string.upper&#xf…

【pyqt5学习】QLayout: Attempting to add QLayout “to ***“, which already has a layout

报错场景&原因 在界面设计时&#xff0c;想实时更新用matplotlib绘制的图像,即会一次次的调用plot函数&#xff0c;这样就会重复地向groupbox里面添加布局&#xff0c;但是一个容器只能有一个布局&#xff0c;因此会报错 def __init__(self):super(weibo_search_logic, se…

3D打印材料PLA,ABS对比

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