递归Java

if (low >= high) return; // 递归边界:子序列长度为1或0时直接返回

int i = low, j = high;

L.r[0] = L.r[low]; // 用子序列的第一个元素作为枢轴(哨兵)

KeyType pivot = L.r[low].key; // 保存枢轴关键字

while (i < j) {

// 从右向左找小于枢轴的元素

while (i < j && L.r[j].key >= pivot) j--;

if (i < j) L.r[i++] = L.r[j]; // 将找到的元素放到左方

// 从左向右找大于枢轴的元素

while (i < j && L.r[i].key <= pivot) i++;

if (i < j) L.r[j--] = L.r[i]; // 将找到的元素放到右方

}

L.r[i] = L.r[0]; // 将枢轴放到最终位置

相关推荐
kk哥88997 小时前
如何快速掌握JavaSE的核心语法?
java
我是一只小青蛙8887 小时前
AVL树:平衡二叉搜索树原理与C++实战
java·jvm·面试
浩瀚地学8 小时前
【Java】JDK8的一些新特性
java·开发语言·经验分享·笔记·学习
XXOOXRT9 小时前
基于SpringBoot的加法计算器
java·spring boot·后端·html5
阿崽meitoufa9 小时前
JVM虚拟机:垃圾收集器和判断对象是否存活的算法
java·jvm·算法
我是苏苏9 小时前
C#高级:使用ConcurrentQueue做一个简易进程内通信的消息队列
java·windows·c#
heartbeat..11 小时前
数据库基础知识体系:概念、约束、范式与国产产品
java·数据库·学习笔记·国产数据库
PXM的算法星球11 小时前
【操作系统】哲学家就餐问题实现详解
java
2301_8153577011 小时前
Java项目架构从单体架构到微服务架构的发展演变
java·微服务·架构