排序算法Java——交换排序(之快速排序)

Java经典算法之快速排序算法 快速排序是一种分治法(Divide and Conquer)的排序算法,由英国计算机科学家Tony Hoare于1960年提出。其基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有元素均比另一部分的元素小,然后分别对这两部分继续进行排序,最终达到整个序列有序的效果。 阅读详情

快速排序简称”快排“

代码如下:

/*@(#)quickSort.java   2017-4-17 
 * Copy Right 2017 Bank of Communications Co.Ltd.
 * All Copyright Reserved
 */

package com.sort.cn;

/**
 * TODO Document quickSort
 * <p>
 * 
 * @version 1.0.0,2017-4-17
 * @author Singit
 * @since 1.0.0 快速排序思想: 通过一趟排序将待排序记录分割成独立的{两部分}, 其中一部分记录的关键字均比另一部分关键字小,
 *        则分别对这两部分继续进行排序,直到整个序列有序。
 */

public class quickSort {
	public static void main(String[] args) {
		int a[] = { 1, 55, 88, 44, 37, 67, 24, 54, 45, 76, 75, 55 };

		quick(a);

		for (int i = 0; i < a.length; i++)

			System.out.print(a[i]+ " ");
	}

	public static int getMiddle(int[] list, int low, int high) {

		int tmp = list[low]; // 数组的第一个作为中轴

		while (low < high) {

			while (low < high && list[high] >= tmp) {

				high--;

			}

			list[low] = list[high]; // 比中轴小的记录移到低端

			while (low < high && list[low] <= tmp) {

				low++;

			}

			list[high] = list[low]; // 比中轴大的记录移到高端

		}

		list[low] = tmp; // 中轴记录到尾

		return low; // 返回中轴的位置

	}

	public static void _quickSort(int[] list, int low, int high) {

		if (low < high) {

			int middle = getMiddle(list, low, high); // 将list数组进行一分为二

			_quickSort(list, low, middle - 1); // 对低字表进行递归排序

			_quickSort(list, middle + 1, high); // 对高字表进行递归排序

		}

	}

	static public void quick(int[] a2) {

		if (a2.length > 0) { // 查看数组是否为空

			_quickSort(a2, 0, a2.length - 1);

		}

	}

}



输出结果:

1 24 37 44 45 54 55 55 67 75 76 88 


OCTF2016--piapiapia 知识点: php反序列化长度变化尾部字符串逃逸 目录扫描发现www.zip,下载得到源码 源码有index.php,输入账号密码后会进入profile.php,还有register.php、updata.php、class.php和config.php flag值在config.php中,想办法访问到其内容 通过seay代码审计找到一点线索 看到profile.php中存在任意文件读取漏洞,前面还有反序列化 现在我们有个大体思路了,update.php中有一个$prof.. 阅读详情

相关推荐

从工艺文件到寄生分析:手把手教你用华大九天RCExplorer做版图预检(附ITF文件解析)

本文详细介绍了华大九天RCExplorer工具在模拟IC和版图设计中的应用,从工艺文件解析到寄生参数提取的全流程。通过ITF文件的深度解析和实战案例,帮助工程师掌握金属层、介质层及通孔参数的关键影响,提升设计效率与准确性。文章还提供了与StarRC工作流集成的实用技巧,是国产EDA工具应用的权威指南。

weixin_42522552的博客 407

java 算法之快速排序

1、快速排序是一种比较高效的排序算法,采用“分而治之”的思想,通过多次比较和交换来实现排序,在一趟排序中把将要排序的数据分成两个独立的部分,对这两部分进行排序使得其中一部分所有数据比另一部分都要小,然后继续递归排序这两部分,最终实现所有数据有序。 2、快速排序图 3、Java 代码实现快速排序 public static void main(String[] args) { int[] arry = {9,8,7,6,5,4,3,2,1}; quickSort(arry,0, a

weixin_54951878的博客 1万+

uniapp [全端兼容] - 详细实现全局修改设置字体大小功能效果,统一修改页面字号字体大小,一键改变字号整个项目立即生效,大中小字号预设、老年人大字模式场景,uniApp全平台兼容控制页面字号大小

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,修改字体大小,一键调整UniApp字体大小,实时改变不用刷新,动态设置字体大小,uniapp全局修改字体字号大小,如何控制全局字号,可调整显示的字体,全项目生效,老年人大字模式,改变所有页面的字体,全局设置字体大小,实现小中大的字体切换,设置改变全局字体大小功能,如何做到全平台兼容,H5APP实现全局字体大小调整,不兼容报错,用户设置字号,全局设置应用字体大小,大中小字体修改,页面设置page-me

🏆 前端领域优质创作者 1万+

用java实现快速排序算法

1.选择一个比较值c,以数组的第一个为例。 2.从右边开始查找比c小的值,再从左边开始查找比c大的值,进行互换。 3.当左边和右边同时指向一个值v(比c小,因为是从右边开始递减的),会退出当前循环。 4.交换c和v的值,返回v所在的地址。 5.递归,以此类推 public class QuickSort { public static int[] quickSort(int[] a,in...

zrcshendustudy的博客 2万+

javascript 酷炫时钟

javascript 酷炫时钟

liuhao9999的博客 631

14、多标签分类与卷积神经网络在医学图像处理中的应用

本文探讨了多标签分类与卷积神经网络(CNN)在医学图像处理中的应用。文章详细介绍了多标签分类的概念和挑战,以及如何通过CNN进行高效、准确的分类任务。内容涵盖模型设计、损失函数选择、数据增强技术、类别权重调整等关键技术点,并结合实际案例,如白内障手术工具检测、视网膜血管分割等,展示了CNN在医学图像分析中的强大潜力。此外,还讨论了模型优化策略及面临的挑战与解决方案。

t8u9v0的博客 192

使用 Java 实现快速排序(详解)

一、概述 最近在看一些面试题,发现很多面试过程中都会要求手写快速排序,查阅一些博客发现别人写的并不是特别清楚而且也很难记住,所以为了更好的掌握这个算法,所以在这篇文章中,将自己的学习过程记录下来,你将学习到快速排序算法和使用 Java 如何实现快速排序。 快速排序是一种基于分而治之的排序算法,其中: 1、通过从数组中选择一个中心元素将数组划分成两个子数组,在划分数组时,将比中心元素小的元素放在左子数组,将比中心元素大的元素放在右子数组。 2、左子数组和右子数组也使用相同的方法进行划分,这个过程一直持续到每.

惜鸟的博客 2万+

华为ensp、思科eve、华为ensp pro中通过cloud桥接本地网络和联通互联网的方法

华为ensp、思科eve中通过cloud桥接本地网络和联通互联网的方法

suofen9703的博客 417

(九)Java算法:快速排序(详细图解)

快速排序

嘉禾嘉宁papa 1万+

C/C++ LMS算法详解及源码

LMS(Least Mean Squares)算法是一种自适应滤波器算法,用于估计一个系统的参数,以使输出信号与期望信号之间的均方误差最小化。LMS算法通过使用梯度下降的方法,逐步调整自适应滤波器的权值来优化滤波效果。

希望我的博客,能帮上你解决学习中工作中所遇到的问题 3276

RK3568实现蓝牙音箱功能

A2DP旨在通过蓝牙连接传输高质量的立体声音频流。它使用的基本压缩算法是SBC(Sub-Band Coding)来减小音频数据的大小,同时保持高音质,SBC压缩虽然效率较低,但是是必须支持的基本备用方案。A2DP还支持其他高级编解码器,例如AAC、aptX和LDAC,这些编解码器比SBC提供更好的音质,但这些编解码器的支持取决于设备本身的支持情况。注意A2DP协议要与AVRCP协议区分开。A2DP是传输音频的,而AVRCP是用来控制音频的。这里我用到的是RK3568 Android11。

leikko的博客 1175

【Java常用排序算法】交换排序(冒泡排序、快速排序)

交换排序 冒泡排序 快速排序 Java实现

一个普本码农奋斗史 2204

万字长文解密:SAP Fiori 首屏加载缓慢背后的真相

什么是一个健康理想的 Fiori 首次加载状态?FLP 首页不臃肿,用户默认看见的内容不多但足够用缓存作业按规则运行,冷启动不至于每次都从零开始应用首屏只读必要数据,UI5 资源经过 preload,视图异步加载OData 服务字段克制、分页合理、缓存分层清楚后台 CDS 与 HANA 只为当前屏幕做最必要的工作。只要这些标准同时满足,用户第一次打开 Fiori 页面的体感通常会从明显卡顿变成可接受甚至顺滑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 557

java实现排序算法之交换排序(冒泡排序和快速排序)

交换排序是指通过交换元素位置来实现算法的排序:最典型的就是冒泡排序和快速排序,下面分别讲解这两种算法的算法思想,稳定性,时空复杂度和java的实现代码

NFMSR的博客 2210

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java排序算法总结之(二)——基于交换排序(冒泡排序、快速排序)

交换排序 1.冒泡排序 基本操作: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 冒泡排序简介易懂,是入门的程序设计算法之一。 Java代码: publ

Appletable的博客 774

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java 排序算法: 交换排序 (冒泡排序+快速排序)

文章目录内部排序的五大排序类型冒泡排序(BubbleSort) 及其改进冒泡排序规则:代码实现:冒泡排序 测试80000个随机数据的排序效率快速排序 (QuickSort)基本思想:快速排序 测试80000个随机数据的排序效率 内部排序的五大排序类型 插入排序 交换排序 冒泡排序 快速排序 选择排序 归并排序 基数排序 冒泡排序(BubbleSort) 及其改进 冒泡排序规则: 一共进行 [数组大小 -1] 次的大循环 每一趟大循环的里的小循环(即每一趟)在逐渐的减少[开始也是 数组大小-1

Beyond_Nothing 279

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java交换排序算法的2个实现(冒泡排序排序、快速排序)

冒泡排序稳定性:稳定 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。 快速排序稳定性:不稳定 快速排序有两个方...

爱的叹息的专栏 683

排序算法小结(二)——交换类排序(Java实现):冒泡排序、快速排序

排序算法小结(二)——交换类排序(Java实现):冒泡排序、快速排序

xx2014301318的博客 205

交换式排序算法之快速排序法-java实现讲解

转载请注明出处 分治法 快速排序算法

Vincent 1245

排序算法——交换排序(冒泡排序、快速排序)(java)

一、冒泡排序   时间复杂度:O(n^2)   公认最慢的排序,每次把最大/最小的放一边,原理:     [57,68,59,52]     [57,68,59,52]     [57,59,68,52]     [57,59,52,68]     每次比较把相对大的数往后移,最后放到最后一位的就是整个数组中最大的数了,然后对n-1个数继续排序。 1 public ...

aems6644的博客 139

排序算法--交换排序(冒泡排序、快速排序、随机快速排序)java实现

交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。   package sortAlgorithms; /* * @author x@j * @date 2013-10-01 * @content BubbleSort * 冒泡排序的思想:假设有N个数据需要排

xjliww123的专栏 767

交换排序算法之冒泡排序和快速排序,java简单实现

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Sorting; import java.util.Scanner; /** * * @author Biaoming */ public class ExchangeSor

钟彪明的专栏 841

java实现排序算法之交换排序(冒泡排序、快速排序)

交换排序的主体操作是对数组中的数据不断进行交换操作。交换排序主要有冒泡排序和快速排序。 [color=red][b]一、冒泡排序[/b][/color] 冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相...

Cliff-来至大山里的娃 170

算法(Java实现)-图解十大经典排序算法(一)——交换排序(冒泡排序、快速排序)

1、排序算法 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 2、排序的分类 2.1按使用内存情况分 内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序。 外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行 排序。 2.2按是否为比较类分 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比

jQueryZK的博客 2467

java 中常见的排序——交换排序(冒泡排序,快速排序)

java中常见的排序——交换排序 交换排序的基本思想概述 冒泡排序:在一个数组中,依次比较相邻的两个数据,小的数据放在前面,大的数据放在后面。就是说:如果前面的数大于后面的数就交换位置,交换位置之后再与下一个数据进行比较,如果前面的数小于后面的数,就不用交换。 快速排序: 在一个数组中,第一个元素与最后一个元素开始往前依次比较,如果第一个元素小于被比较的元素则继续比较,如果大于被比较的元素则交换...

qq_31322085的博客 1383

java的 交换排序 快速排序算法_数据结构之排序算法Java实现(4)—— 交换类排序之快速排序算法...

快速排序算法属于"交换类"的排序,它的效率主要跟数据分布是否对称有关。升序排序:/*** 快速排序* 升序排序*/@Overridepublic > void sortByAsc(T[] data) {if(data == null || data.length <= 1){return;}partitionSortByAsc(data, 0, data.length - 1);}pr...

weixin_35315019的博客 120
上一篇: 冒泡排序看这篇就够了(附Java代码实现)
下一篇: 排序算法Java实现——选择排序(直接选择排序)
白衣染霜陈
博客等级 码龄22年 682粉丝 338原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值