news 2026/8/7 8:34:51

快速排序非递归实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
快速排序非递归实现

一、排序过程

排序的思路是不变的,这里采用挖坑法,不用递归实现,用栈实现

前面的步骤省略,当left与right相遇的时候,依次将0 、4 、6、9入栈,因为栈的性质,以及入栈的顺序,弹出的时候从右往左

start为6 ,end为9再次排序即可

排序后如图

将6、7入栈

后面就是重复的过程

。。。

二、代码实现

public static void quickSort(int[] arr){ quickNor(arr,0,arr.length - 1); } private static void quickNor(int[] arr, int start, int end) { Deque<Integer> deque = new ArrayDeque<>(); int pivot = partitionHole(arr, start, end); if(pivot > start + 1){ deque.push(start); deque.push(pivot - 1); } if(pivot < end - 1){ deque.push(pivot + 1); deque.push(end); } while(!deque.isEmpty()){ end = deque.pop(); start = deque.pop(); pivot = partitionHole(arr, start, end); if(pivot >= start + 1){ deque.push(start); deque.push(pivot - 1); } if(pivot <= end - 1){ deque.push(pivot + 1); deque.push(end); } } } private static int partitionHole(int[] arr, int left, int right) { int tmp = arr[left]; while(left < right) { while(left < right && arr[right] >= tmp){ right--; } arr[left] = arr[right]; while(left < right && arr[left] <= tmp){ left++; } arr[right] = arr[left]; } arr[left] = tmp; return left; }

时间复杂度为 O( N *log N)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 15:19:48

春秋云境CVE-2024-36104

1.阅读靶场介绍我们能得到的就是目录遍历这里我们需要稍微等待一下&#xff0c;博主等了五分钟才成功进入靶场的哟2.进入靶场得到如下的页面这里我们需要改一下url改为https之后再抓包3.https哟记得哟用https能得到一个如下图所示的界面原地刷新抓包4.bp启动啦&#xff0c;别睡…

作者头像 李华
网站建设 2026/7/14 15:19:48

Drogon 现代化C ++高性能框架

框架自带 GC 垃圾回收 现在ai时代&#xff0c;直接让ai写业务即可&#xff0c;直接上最强并发的框架。 业务 用 octane 高并发场景&#xff0c;正常来说也不会非常多接口&#xff0c;用 Drogon 完美。hello.cpp#include <drogon/drogon.h> using namespace drogon;int …

作者头像 李华
网站建设 2026/7/14 15:19:49

有了这款我们的Skill,合规变得好容易!!

做跨境电商的应该都懂&#xff0c;侵权这两个字&#xff0c;到底有多要命。一个热销上万的商品因为版权侵权直接下架&#xff0c;一条做了半年的 BSR 链接直接被下架&#xff0c;店铺资金被 TRO 冻结了 28 万&#xff0c;光律师费和解费就花了小 10 万&#xff0c;半年的辛苦直…

作者头像 李华
网站建设 2026/7/14 15:19:50

HarmonyOS 6实战30:命令行工具链深度解析

还在为HarmonyOS开发环境配置而烦恼&#xff1f;你的构建流程如何实现自动化&#xff1f;为什么命令行工具在CI/CD中如此重要&#xff1f;DevEco Studio背后的工具链到底隐藏着哪些强大功能&#xff1f;哈喽大家好&#xff0c;我是你们的老朋友爱学习的小齐哥哥。前段时间&…

作者头像 李华
网站建设 2026/7/14 15:19:52

Java高频面试题(十四):Nginx高性能反向代理服务器解析

Nginx Nginx是什么 Nginx是一个高性能的基于HTTP的反向代理的服务器,也是基于SMTP和POP3的邮件服务器。其主要功能就类似于Tomcat,对外提供资源共享。 反向代理 是指以代理服务器来接收客户端请求,然后将请求转发给内部网络上的服务器(如多个spring boot后端服务或微服务)…

作者头像 李华