当前位置: 首页 > news >正文

Java 语言实现快速排序算法

【引言】
快速排序算法是一种常用且高效的排序算法。它通过选择一个基准元素,并将数组分割成两个子数组,一边存放比基准元素小的元素,另一边存放比基准元素大的元素。然后递归地对这两个子数组进行排序,最终达到整个数组有序的目的。本文将使用Java语言实现快速排序算法,并详细讲解其核心思想和代码实现。

【算法思想】
快速排序的核心思想是分治法。具体步骤如下:

  1. 选择一个基准元素,将数组分割成两个子数组,一边存放比基准元素小的元素,另一边存放比基准元素大的元素。
  2. 对子数组进行递归调用快速排序。
  3. 合并排序后的子数组,得到最终有序的数组。

【Java代码实现】
下面是用Java语言实现快速排序算法的代码:

public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {// 找到基准元素的位置int pivotIndex = partition(arr, low, high);// 递归地对基准元素左右两边的子数组进行排序quickSort(arr, low, pivotIndex - 1);quickSort(arr, pivotIndex + 1, high);}}public static int partition(int[] arr, int low, int high) {int pivot = arr[high];  // 选择最右边的元素作为基准元素int i = low - 1;for (int j = low; j < high; j++) {if (arr[j] < pivot) {i++;swap(arr, i, j);}}swap(arr, i + 1, high);return i + 1;}public static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}public static void main(String[] args) {int[] arr = {5, 2, 8, 3, 1};int n = arr.length;quickSort(arr, 0, n - 1);System.out.println("排序结果:");for (int num : arr) {System.out.print(num + " ");}}
}

【代码解析】
在代码中,我们定义了三个静态方法。quickSort方法是快速排序的主要方法,它接受一个整数数组、最低索引和最高索引作为输入,并对数组进行排序。partition方法用于将数组分割成两个子数组,返回基准元素的索引。swap方法用于交换数组中两个元素的位置。

main函数中,我们创建了一个测试数组并调用quickSort方法进行排序。最后,我们将排序结果输出到控制台。

【时间复杂度和稳定性】
快速排序算法的时间复杂度为O(nlogn),其中n表示待排序数组的大小。快速排序是一种不稳定的排序算法,因为在分割过程中,相等元素可能会交换位置。

【总结】
本文使用Java语言实现了快速排序算法,并详细讲解了其核心思想和代码实现。快速排序是一种常用且高效的排序算法,广泛应用于实际开发中。希望本文对于理解和应用快速排序算法有所帮助。

相关文章:

Java 语言实现快速排序算法

【引言】 快速排序算法是一种常用且高效的排序算法。它通过选择一个基准元素&#xff0c;并将数组分割成两个子数组&#xff0c;一边存放比基准元素小的元素&#xff0c;另一边存放比基准元素大的元素。然后递归地对这两个子数组进行排序&#xff0c;最终达到整个数组有序的目的…...

Config: Git 环境搭建

...

最新AI系统ChatGPT网站程序源码/搭建教程/支持GPT4.0/Dall-E2绘画/支持MJ以图生图/H5端/自定义训练知识库

一、正文 SparkAi系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。 那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&#xff01…...

leetcode 392. 判断子序列

2023.8.25 本题要判断子序列&#xff0c;可以使用动态规划来做&#xff0c;定义一个二维dp数组。 接下来就是常规的动态规划求解子序列的过程。 给出两种定义dp数组的方法。 二维bool型dp数组&#xff1a; class Solution { public:bool isSubsequence(string s, string t) …...

课程项目设计--spring security--认证管理功能--宿舍管理系统--springboot后端

写在前面&#xff1a; 还要实习&#xff0c;每次时间好少呀&#xff0c;进度会比较慢一点 本文主要实现是用户管理相关功能。 前文项目建立 文章目录 验证码功能验证码配置验证码生成工具类添加依赖功能测试编写controller接口启动项目 security配置拦截器配置验证码拦截器 …...

【算法日志】动态规划刷题:完全背包应用问题(day39)

代码随想录刷题60Day 目录 前言 零钱兑换 完全平方数 前言 今天重点是对完全背包问题进一步了解&#xff0c;难度不大&#xff0c;重点是区分与其他背包问题在初始和遍历上的一些细节。 零钱兑换 int coinChange(vector<int>& coins, int amount) {if (!amount)re…...

基于Python的图书馆大数据可视化分析系统设计与实现【源码+论文+演示视频+包运行成功】

博主介绍&#xff1a;✌csdn特邀作者、博客专家、java领域优质创作者、博客之星&#xff0c;擅长Java、微信小程序、Python、Android等技术&#xff0c;专注于Java、Python等技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; …...

cmake 交叉编译应用程序:手动设置链接脚本

前言 在使用 cmake 交叉编译应该应用程序时&#xff0c;好像没有手动设置【链接脚本】&#xff0c;也能正常构建生成 Makefile&#xff0c;并且可以正常 Make 生成需要的 应用程序。 但是有些应用程序&#xff0c;需要手动指定【链接脚本】&#xff0c;比如修改链接地址&#…...

深入探讨Eureka的三级缓存架构与缓存运行原理

推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 史上最全文档AI绘画stablediffusion资料分享 AI绘画关于SD,GPT,SDXL等个人总结文档 资源分享 「java、python面试题…...

leetcode496. 下一个更大元素 I 【单调栈】

【简单题】&#xff08;暴力遍历法很简单&#xff09;但是时间复杂度很高&#xff0c;n的立方级别了。。。 代码&#xff1a; class Solution { public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {vector<int&g…...

Fastadmin框架 聚合数字生活抵扣卡系统v2.8.6

【2.8.6更新公告】 1.【优化】优化已知问题。 2.【新增 】新增区县影院。...

windows下MSYS、MinGW编译环境使用网络API时报错:undefined reference to `inet_pton‘解决办法

windows下MSYS、MinGW编译环境使用网络API时报错&#xff1a;undefined reference to inet_pton’解决办法 mingw-gcc环境使用网络需要加上库 -lws2_32。 如果是使用的是Qt Creator那么需要在.pro文件中加入一行&#xff1a;win32:LIBS -lws2_32。 当在项目中使用inet_pton、…...

unity-AI自动导航

unity-AI自动导航 给人物导航 一.地形创建 1.首先我们在Hierarchy面板中创建一个地形对象terrian&#xff0c;自行设定地形外貌&#xff0c;此时我们设置一个如下的地形外观。 二.创建导航系统 1.在主人公的Inspector、面板中添加Nav Mesh Agent &#xff08;导航网格代理&…...

使用create-react-app创建react项目

create-react-app 全局安装create-react-app npm install -g create-react-app 使用create-react-app创建一个项目 $ create-react-app your-app 注意命名方式Creating a new React app in /dir/your-app.Installing packages. This might take a couple of minutes. 安装过…...

12.串,串的存储结构与模式匹配算法

目录 一. 一些术语 二. 串的类型定义 &#xff08;1&#xff09;串的顺序存储结构 &#xff08;2&#xff09;串的链式存储结构 三. 串的模式匹配算法 &#xff08;1&#xff09;BF算法 &#xff08;2&#xff09;KMP算法 四. 案例实现 串(String)---零个或多个任意字符…...

Ribbon:listOfServers ,${variableName:defaultValue}

解释&#xff1a; 配置了address的地址,请求会走address&#xff0c;也就是http://127.0.0.1:8081&#xff0c;通常用户与别的后端服务进行联调设置为其本地服务的ip。 如果address的地址被注释掉&#xff0c;如下面所示&#xff0c;类似这样的占位符${variableName:defaultVa…...

TensorFlow二元-多类-多标签分类示例

探索不同类型的分类模型&#xff0c;使用 TensorFlow 构建二元、多类和多标签分类器。 二元分类 简述 逻辑回归 二元交叉熵 二元分类架构 案例&#xff1a;逻辑回归预测获胜团队 多类分类 简述 Softmax 函数 分类交叉熵 多类分类架构 案例&#xff1a;预测航天飞机…...

【回眸】牛客网刷刷刷!(七)——通信协议之 网络通讯

目录 前言 1、TCP/IP分层模型 2、ARP缓存 3、TCP 协议之所以提供可靠传输&#xff0c;不怕丢包、乱序的主要的原因是 4、以太网数据链路层MII/GMII/RMII/RGMII四种常用接口 5、在以太网通信协议LWIP中&#xff0c;数据包管理机构采用数据结构pbuf 分类包括 6、关于以太网…...

MySQL 安装配置

MySQL 安装配置 MySQL 是最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。 MySQL由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL…...

【0824作业】C++ 拷贝赋值函数、匿名对象、友元、常成员函数和常对象、运算符重载

一、思维导图 二、作业&#xff1a;实现关系运算符的重载 关系运算符重载 概念&#xff1a; 种类&#xff1a;>、>、< 、< 、 、!表达式&#xff1a;L#R (L表示左操作数&#xff0c;R表示有操作数&#xff0c;#表示运算符)左操作数&#xff1a;既可以是左值也可以…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

C# WPF 左右布局实现学习笔记(1)

开发流程视频&#xff1a; https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码&#xff1a; GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用&#xff08;.NET Framework) 2.…...

dvwa11——XSS(Reflected)

LOW 分析源码&#xff1a;无过滤 和上一关一样&#xff0c;这一关在输入框内输入&#xff0c;成功回显 <script>alert(relee);</script> MEDIUM 分析源码&#xff0c;是把<script>替换成了空格&#xff0c;但没有禁用大写 改大写即可&#xff0c;注意函数…...