JAVA快速排序算法

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

快速排序

import java.util.Arrays;

public class TestQuickSort {	
	public static void main(String[] args) {
		//给出无序数组
		int[] arr = {72,6,57,88,60,42,83,73,48,85};				
	
		//快速排序
		quickSort(arr);	
		
		//输出有序数组
		System.out.println(Arrays.toString(arr));
	}

	public static void quickSort(int[] arr) {
		int low = 0;
		int high = arr.length-1;
		quickSort(arr,low,high);		
	}

	private static void quickSort(int[] arr, int low, int high) {
		if(low<high){
			//分区操作,将一个数组分成两个区,返回分区界限索引			
			int index = partition(arr,low,high);
			
			//对左分区进行快排
			quickSort(arr,low,index-1);
			
			//对右分区进行快排
			quickSort(arr,index+1,high);
		}		
	}

	private static int partition(int[] arr, int low, int high) {
		//指定左指针i和右指针j
		int i = low;
		int j = high;		
		//将第一个数作为基准值,挖坑		
		int x = arr[low];		
		//使用循环实现分区操作
		while(i<j){
			while(arr[j]>=x&&i<j){
				j--;
			}
			if(i<j){
				arr[i] = arr[j];
				i++;
			}
			while(arr[i]<=x&&i<j){
				i++;
			}
			if(i<j){
				arr[j]=arr[i];
				j--;
			}
		}		
		//使用基准值填坑,这就是基准值的最终位置
		arr[i] = x;		
		//返回基准值的的索引
		return i;			
	}	

}

电流模架构Bandgap设计与仿真 带隙基准作为集成电路中一个重要模块,被广泛应用在低压差线性稳压(LDO)、充电电池保护芯片和通信电路、射频收发器、flash存储器等多种模拟及数模混合集成电路中,并且是片上集成系统(SOC)芯片中不可或缺的部分,为整个芯片提供精确的电压参考点............ 阅读详情

相关推荐

单细胞测序数据整合

基于Seurat 联合harmony进行单细胞数据整合分析

G2530051386的博客 9791

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

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

惜鸟的博客 2万+

labview汽车电子通用测试程序架构,CAN通讯上位机

结合做过的汽车电子测试项目,车身控制器测试,CAN网络模块测试,电机控制器功能测试,汽车仪表盘视觉及功能测试、电气盒功能测试、EOL下线检测、车用空调控制器功能测试等项目,结合实际项目,整理编写的一个汽车电子,通用测试架构,包含项目的讲解等。6、数据保存 、数据处理、 曲线显示 、报警处理等。7、CAN总线故障信息监控及记录保存。2、参数设置(CAN端口及参数)5、CAN通讯+数据解析。

ali2805486883的博客 2754

Java 七大排序之快速排序(三种方法包含优化方法)

1. 快速排序整体的综合性能和使用场景都是比较好;2.时间复杂度:O(N*logN) 空间复杂度:O(logN);3.稳定性:不稳定。

m0_56911648的博客 1万+

STM32版CCD线性摄像头寻线寻迹小车_stm32接ccd

目前大多数的小车寻线寻迹都是用红外对管寻线,这是比较简单也比较成熟的技术方案,且成本也低。本文将介绍使用CCD线性摄像头寻线寻迹。TSL1401 线性传感器由一个 1x128 的光电二极管阵列、相关的电荷放大电路以及一个内部像素数据保功能组成。内部像素数据保功能可以为所有像素点提供同时积分的开始和停止时间。该阵列由 128 个像素组成,每个像素的感光面积为 3,524.3 平方微米。像素之间的间隔为 8μm。内部控制逻辑简化了操作,该模块需要串行输入(SI)信号和时钟信号(CLK)。

2401_87557129的博客 3229

大华摄像头GB28181协议接入EasyCVR全流程(附常见错误排查)

本文详细阐述了大华摄像头通过GB28181协议接入EasyCVR视频管理平台的全流程,涵盖从核心原理、前期参数规划、Web界面配置到平台侧验证的完整步骤。重点针对网络端口、SIP参数配置等关键环节提供了深度排错指南,并总结了设备无法注册、在线不稳定、拉流失败等常见问题的排查思路与解决方案,旨在帮助安防工程师与系统集成商高效完成设备接入与调试。

weixin_29279153的博客 309

快速排序算法(java实现)

基本思想 快速排序是一种采用分治法解决问题的一个典型应用,也是冒泡排序的一种改进。它的基本思想是,通过一轮排序将待排记录分割成独立的两部分,其中一部分均比另一部分小,则可分别对这两部分继续进行排序,已达到整个序列有序。排序的时间复杂度为 O(nlogn),相比于简单排序算法,运算效率大大提高。 算法步骤 从序列中取出一个数作为中轴数; 将比这个数大的数放到它的右边,小于或等于他的数放到它的左边; 再对左右区间重复第二步,直到各区间只有一个数。 例如,对以下 10..

qq_45954420的博客 1万+

从YOLOv8到RTDETR:如何将训练后的YOLO指标无缝转换为COCO格式

本文详细介绍了如何将训练后的YOLOv8指标无缝转换为COCO格式,特别适用于RTDETR模型的评估。通过数据准备、指标转换流程和实际项目经验,帮助开发者解决YOLO与COCO指标差异问题,提升模型评估的准确性和权威性。

weixin_29085151的博客 378

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万+

存储关键技术·RAID技术·RAID2.0·华为RAID2.0+·华为服务器·云计算

一.RAID基本概念 常见的RAID级别组合RAID级别 二.RAID的数据组织形式 三.RAID的数据保护功能 方法一:镜像方法二:奇偶校验算法(XOR) 四.RAID热备和重构 1.热备(Hot Spare)的定义2.热备的分类3.热备的工作原理 五.RAID 2.0技术 1.RAID 2.02.RAID 2.0+3.华为RAID 2.0+ 六.RAID 2.0+块虚拟化技术 1.什么会出现RAID 2.0+技术?2.什么是RAID 2.0?3.RAID 2.0+的原理是什么?

qq_47480932的博客 3320

计算图像哈希SHA-512

上述需要将lena.jpg放在当前目录下。

计算机视觉之光 961

java实现快速排序算法

快速排序 1、算法思想 快速排序是由冒泡排序改进而得到的,是一种分区交换排序方法。思想如下: 一趟快速排序采用从两头向中间扫描的方法,同时交换与基准记录逆序的记录。 (1)在待排序的N个记录中任取一个元素(通常取第一个记录)作为基准,称为基准记录; (2)定义两个索引 left 和 right 分别表示“首索引” 和 “尾索引”,key 表示“基准值”; (3)首先,尾索引向前扫描,直到找到比基准值小的记录(left != righ),并替换首索引对应的值; (4)然后,首索引向后扫描,直到找到比基准值大于

EatingSoilLang 6751

基于Python的军事装备数据爬取与分析:从网页抓取到数据可视化实战

本文将详细介绍如何使用Python最新技术栈构建一个完整的军事装备数据爬虫系统。我们将从爬虫基础讲起,逐步深入到异步爬取、反反爬策略、数据存储与分析等高级主题,最终实现一个能够自动抓取、清洗、存储和分析军事装备数据的完整解决方案。文章包含大量实战代码示例,涉及requests-html、aiohttp、Playwright等现代爬虫库,以及MongoDB存储、Pandas分析和Pyecharts可视化等技术。关键词:Python爬虫、军事数据、异步爬取、反反爬、数据可视化。

2201_76125261的博客 1188

Java 快速排序算法

简介 上一章我们学习了 Java 希尔排序算法,这一章,我们来学习快速排序算法,so,多了不说,继续老规矩,学习内容如下: 1、快速排序的定义 2、快速排序的思路 3、代码实现 1.快速排序的定义 快速排序的基本思想:通过一趟排序将待排记录分隔成 独立的两部分 ,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 2.快速排序的思路 快速排序使用分治法,把一个串(list)分为两个子串(child-list)具体算法描述如下: 从数列中挑出一个元素,

ZengTao 2296

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

快速排序算法的JAVA实现

package Utils.Sort;/***快速排序,要求待排序的数组必须实现Comparable接口*/public class QuickSort implements SortStrategy{       private static final int CUTOFF = 3;             //当元素数大于此值时采用快速排序        /**       *利用快速排序算

刘锡明的专栏 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

快速排序算法_排序算法Java实现快速排序算法

点击上方蓝字关注我们作者:Cansluck优快云博客:https://blog.youkuaiyun.com/xgx120413开篇介绍大家好,公众号【Java极客思维】近期会整理一些Java高频面试题分享给小伙伴,也希望看到的小伙伴在找工作过程中能够用得到!本章节主要针对Java快速排序算法的实现进行分享。首先,来看一下,快速排序的实现的动态图:快速排序介绍:快速排序,根据教科书说法来看,是冒泡...

weixin_39588223的博客 559

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java快速排序的算法_java快速排序算法实现

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。public class ArrayIns {private long[] theArray;private int nElems;public ArrayIns(int max) {theArray = new long[max];nElems = 0;}public void insert...

weixin_39963287的博客 176

java快速排序的算法_排序算法-Java实现快速排序算法

​​开篇介绍大家好,公众号【Java极客思维】近期会整理一些Java高频面试题分享给小伙伴,也希望看到的小伙伴在找工作过程中能够用得到!本章节主要针对Java快速排序算法的实现进行分享。首先,来看一下,快速排序的实现的动态图:​快速排序,根据教科书说法来看,是冒泡排序的一种改进。快速排序,由一个待排序的数组(array),以及找准三个变量:中枢值(pivot)左值(left)右值(right)根据...

weixin_39811101的博客 199

Java快速排序算法

package com.tentact.sort; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; public class QuickSort { public static void main(String[] args) { //int[] arr = {-9,78,0,23,-567,70, -1,900, 4561}; //测试快排的执行速度 // 创建要

weixin_44256581的博客 274

Java实现 蓝桥杯VIP 算法训练 快速排序

import java.util.Scanner; public class 快速排序 { public static void main(String[] args){ Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int[] ar=new int[a]; for(int i=0;i<a;i++){ ...

南 墙 1万+

快速排序算法Java实现

快速排序算法Java实现 快速排序是运用广泛的一种排序算法,其时间复杂度是nlog(n),用到了分治的思想,以下是快排的Java实现。 首先定义一个接口Sorter,此接口的第一个sort方法接收一个list数组,该数组中的对象要求必须继承了Comparable类,通过Comparable类的compareTo()方法来进行比较;第二个sort方法接收一个list数组和一个Comparator 类...

qq_40373914的博客 548

快速排序算法——Java实现

快速排序算法——Java实现 某公司第三轮面试,被要求手撕快速排序算法,当时因为没有准备,对算法这块忘记的比较多,所以当场蒙圈,回去后仔细研究了各种排序算法,以下是快排的代码。在这里插入代码片 package com.jin.controller; import java.util.Scanner; public class QuickSort { public static void...

PlanetWalker的博客 1191

java快速排序代码_java快速排序算法

[java]代码库/*** 快速排序** 在当前无序区R[1..H]中任取一个数据元素作为比较的"基准"(不妨记为X),用此基准将当前无序区划分为左右两个较小的无序区:* R[1..I-1]和R[I+1..H],且左边的无序子区中数据元素均小于等于基准元素,右边的无序子区中数据元素均大于等于基准元素,* 而基准X则位于最终排序的位置上,即R[1..I-1]≤ X.Key≤R[I+1..H](1≤I...

weixin_35291771的博客 794

java 实现快速排序算法_JAVA实现快速排序算法(快排)

/*** @author : xxj* @date : 2012-7-24* @time : 下午8:13:13* @describe : 快速排序算法(JAVA)*/public class QuickSort {public static int[] quickSort(int[] numbers){if(numbers == null || numbers.length < 2){re...

weixin_42484858的博客 243

java快速排序排序算法,Java实现快速排序算法

将问题划分为子问题时要记住的一件事是,子问题的结构不会像原始问题一样发生变化。分而治之算法有3个步骤:划分:将问题分解为子问题征服:以递归方式解决子问题合并:合并解决方案以获得最终结果 有多种基于分而治之范式的算法。快速排序和合并排序就是其中之一。尽管QuickSort在最坏情况下的时间复杂度为O(n2),这比许多其他排序算法(如“合并排序”和“堆排序”)要高,但实践中QuickSort的速度更快...

weixin_35912261的博客 269

Java实现快速排序算法

/ 输出 [1, 2, 3, 6, 8, 9]| 内存排序 | Java的 `Arrays.sort()` 对基本类型使用快速排序优化版(双轴快排) |if (arr[j] <= pivot) { // 当前元素比基准小。// 小元素区的指针。结果:左区空(没有比1小的),1放最前 → [1,3,8,2,9,6]| 1 | 选择基准元素(Pivot) | O(1) || 3 | 递归处理左右子数组 | O(log n) |

zhangxueyi的专栏 887
上一篇: JAVA冒泡排序算法
下一篇: JAVA顺序查找、二分查找
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值