import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
int [] arr=new int [n];
for(int i=0;i<n;i++)
arr[i]=in.nextInt();
sort(arr, 0, arr.length - 1);
print(arr);
}
public static void sort(int arr[], int low, int high) {
int l = low;
int h = high;
int k = arr[low];
while (l < h) {
// 从后往前比较
while (l < h && arr[h]>=k){
h--;// h=6
}
if (l < h) {
int temp = arr[h];
arr[h] = arr[l];
arr[l] = temp;
//进行过一次替换后,没必要将替换后的两值再次比较,所以i++直接下一位与k对比
l++;
}
// 从前往后比较
while (l < h && arr[l] <= k) {
// 如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置
l++;
}
if (l < h) {
int temp = arr[h];
arr[h] = arr[l];
arr[l] = temp;
h--;
}
}
// 递归
if (l > low)
//先判断l>low再次经行左边排序
sort(arr, low, l - 1);
if (h < high)
//左边依次排序执行完递归后,弹栈进行右边排序
sort(arr, l + 1, high);
}
// 打印数组的方法
private static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (i != (arr.length - 1)) {
System.out.print(arr[i] + " ");
} else {
System.out.print(arr[i]);
System.out.println();
}
}
}
}
测试:
6
1 3 2 4 6 5
输出:
1 2 3 4 5 6
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)