随笔 - 330,  文章 - 1,  评论 - 0,  阅读 - 9025
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

 

posted on   vow007  阅读(5)  评论(0编辑  收藏  举报  
编辑推荐:
· 从 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)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示