八大排序--08快速排序

现有 arr= {4,8,9,2,7}数组,请用快速排序的方式实现从小到大排序:

方法:

1.定义待排序数组中的第一个值为基准数;

2.定义j游标,从后向前移动找到第一个比基准数小的值停下;

3.定义i游标,从后向前移动找到第一个比基准数大的值停下;

4.i和j数值交换;

5.重复2-4步骤直到i和j相遇;

6.基准数和相遇位置的数据进行交换,交换完后的基准数到达正确位置;

7.以基准数为起始点,分为左右两部分,重复上述1-6步骤,直至数据都被拆分开结束

完整代码:

java 复制代码
package Java.start;

import java.util.Arrays;

public class quickSort {
//快速排序
	public static void main(String[] args) {
		int[] arr= {4,8,9,2,7};
		Sort(arr, 0, arr.length-1);
		System.out.println(Arrays.toString(arr));
	}
	
	public static void Sort(int[] arr,int left,int right) {
		
		if(left>=right) {//为了防止过界(!注意)
			return;//递归出口
		}
			int base=arr[left];
			//System.out.println(base+"base");
			int i=left;
			int j=right;
			while(i!=j) {
			//	j游标从后向前移动,找比基准数更小的
			
			while(arr[j]>=base&&i<j) {
				j--;
			}
			//i游标从前向后移动,找比基准数更大的
			while(arr[i]<=base&&i<j) {
					i++;
			}
				//i和j交换
			int temp=arr[i];
			arr[i]=arr[j];
			arr[j]=temp;
			}
			//i和j相遇,基准数和相遇位置进行交换
		  arr[left]=arr[i];
		  arr[i]=base;
		  //排序左边
		  Sort(arr,left,i-1);
		  //排序右边
		  Sort(arr,i+1,right);
		
		
	}
		
}

结果:

相关推荐
DP DPharness36 分钟前
ClearAI、记忆插件与普通笔记,三种让 Agent 记住的路数对比
笔记
sunshine22 girl2 小时前
Java学习七 Java 项目实战2-注册业务
java·学习
奋发向前wcx2 小时前
CSP-J复赛模拟赛4 王晨旭补题 2026.10.5
算法
省钱兄--zs2 小时前
北京24小时自助健身房系统软件开发实战:从架构设计到部署指南
java·数据仓库·spring boot·小程序·需求分析
youdexiang2 小时前
Android录音软件时间关键词检索功能分析
java·人工智能
piikee3 小时前
粤语初学入门:从粤拼、九声六调到开口,一个普通话母语者的练习笔记
笔记·粤语入门·怎么学习粤语
sunshine22 girl3 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
code2cat3 小时前
Java进阶篇之AtomicStampedReference:引用回到原值,版本戳仍能记住变化
java·cas·并发编程·aba
念何架构之路4 小时前
zap采样器与性能优化内幕
算法·性能优化·哈希算法
泡茶喝茶写代码5 小时前
A股量化数据工程:从 REST 接口到策略信号(第 8 篇):成长能力因子:营收与利润增速
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口·股票数据api数据