用wordpress建站难吗,分类目录网站做排名,不连接wordpress安装,网站开发的业务风险文章目录
Java实现快速排序 快速排序原理快速排序一次划分图文演示过程整个快速排序的过程具体Java代码实现简结快速排序的性能
Java实现快速排序
冲鸭#xff0c;装上涡轮增鸭#xff0c;开始学习快速排序算法吧#xff01;#xff08;快排也是一个递归过程噢#x…文章目录Java实现快速排序快速排序原理快速排序一次划分图文演示过程整个快速排序的过程具体Java代码实现简结快速排序的性能Java实现快速排序冲鸭装上涡轮增鸭开始学习快速排序算法吧快排也是一个递归过程噢快速排序原理快速排序(Quick Sort)又被称为分区排序它的基本思想是:在待排序文件中任选一个记录(称为基准记录)以它的排序码为基准值将排序码比它小的记录都放到它的前面排序码比它大的记录都放到它的后面至此该基准记录就找到了排序的最终位置同时将文件划分成前、后两个区。在两个区上用同样的方法继续划分直到每个区中最多只有一个记录排序完成。在快速排序过程中比较和交换是从数组的两端向中间进行的使得排序码较小或较大的记录一次就能够交换到数组的前面或后面记录的每一次移动距离都较远因而使得总的比较和移动次数较小。快速排序是对起泡排序的一种改进它是目前所有的内部排序方法中速度最快的一种。快速排序一次划分图文演示过程建立如下整z型数组int[] array new int[]{46,36,96,26,86,16,76,-17};设置两个数组索引分别为低位索引 low 和高位索引 high初始值分别为low 0 high array.length-1选取array[low]作为第一次划分的基准元素若 low high从high位置开始向前搜索数组元素小于基准元素的数组元素索引如果找到了就将array[high]移动到array[low]的位置然后从low的位置开始向后搜索数组元素大于基准元素的数组元素索引如果找到了就将array[low]移动到array[high]]的位置重复上诉操作直到低位索引和高位索引相遇即low high即不满足条件low high此时就找到了基准元素的最终排序位置low因为这个时候low位置上的原值已经被移走需要将基准放到该位置上这个位置也是基准的最终排序位置。如此一次划分过程完毕。接下来脑海中想象这么一个事情算是有点抽象吧想象这样的一个坑位——“▢”将坑位放在数组索引0的位置这时候索引0位置的位置没有了元素就是这样的一个▢在代码中debug看值实际上是有的这里就想象没有。你想象好了以后它就长成下面表1那个样子。接下来要开始啦坑位在array[0]如表1所示结合表1从高位索引开始向前搜索比基准46小的元素找到的元素是-17将array[7]移动到array[0]坑位转到索引7如表2所示结合表2从低位索引开始向后搜索比基准46大的元素找到的元素是96将array[2]移动到array[7]坑位转到索引2如表3所示结合表3从高位索引开始向前搜索比基准46小的元素找到的元素是16将array[5]移动到array[2]坑位转到索引5如表4所示结合表4从低位索引开始向后搜索比基准46大的元素找到的元素是86将array[4]移动到array[5]坑位转到索引4如表5所示结合表5从高位索引开始向前搜索比基准46小的元素但是没找到两个索引相遇了即是 low high如表6所示此时一次划分就此结束了基准也应该到位了low索引就是基准最终的排序位置即array[4] 46与此同时一个大的数据区间也划分成为了两个小的数据子区间左边子区间的数都比基准小右边子区间都比基准大如表7所示注意在方法体中需要返回基准的索引即 low整个快速排序的过程具体Java代码实现QuickSort类public class QuickSort { public static void sort(int[] array, int low, int high) { if (low high) { int part partition(array, low, high);//获取中间索引将区间一分为二分为两个子区间 sort(array, low, part - 1);//对前面的子区间快速排序 sort(array, part 1, high);//对后面的子区间快速排序 } } //一趟快速排序返回值是本次基准的最终索引位置 private static int partition(int[] array, int low, int high) { int benchmark array[low];//初始化基准不妨将低位索引值赋给基准 //从数组的两端向中间开始扫描寻找基准元素位置 while (low high) { //高位指针开始向中间寻找比基准小的元素 while ((low high) array[high] benchmark) { high--; } //比基准小的高位索引元素赋值到低位索引 if (low high) { array[low] array[high]; } //低位指针开始向中间寻找比基准大的元素 while ((low high) (array[low] benchmark)) { low; } //比基准大的低位索引元素赋值到高位索引 if (low high) { array[high] array[low]; } } //将基准元素归位基准元素的索引位置就是两个索引指针相遇的位置 array[low] benchmark; return low;//返回基准元素的最终索引 } }TestMain类import java.util.Arrays; public class TestMain { public static void main(String[] args) { int[] array new int[]{46,36,96,26,86,16,76,-17}; int low 0;//初始低位索引 int high array.length-1;//初始高位索引 System.out.print(排序前); System.out.println(Arrays.toString(array)); //使用快速排序算法对数组排序 QuickSort.sort(array,low,high); System.out.print(排序后); System.out.println(Arrays.toString(array)); } }运行结果如下排序前[46, 36, 96, 26, 86, 16, 76, -17] 排序后[-17, 16, 26, 36, 46, 76, 86, 96]简结快速排序的性能时间效率快速排序的平均时间复杂度是O(nlog2n)当n较大时通常快速排序被认为在同数量级的排序方法中平均性能是最好的空间效率快速排序是递归过程每层递归调用时的指针和参数均要用栈来存放递归调用的深度与对应的二叉树深度是一样的。因此最好的空间复杂度是O(nlog2n)最坏的空间复杂度是O(n)平均空间复杂度是O(nlog2n)稳定性快速排序是一个不稳定的排序方法。关于快排的学习就到这里啦大家可以多画画一次划分的过程便于理解快排的原理。关于代码方面如果不是很好理解可以先去了解了解递归算法同时结合着Debug一步一步的执行代码看看各个变量是如何变化的就很容易理解快排啦~和ChenSeventeen一起记录学习、成长过程吧说真的这两年看着身边一个个搞Java、C、前端、数据、架构的开始卷大模型挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis稳稳当当过日子。结果GPT、DeepSeek火了之后整条线上的人都开始有点慌了大家都在想“我是不是要学大模型不然这饭碗还能保多久”先给出最直接的答案一定要把现有的技术和大模型结合起来而不是抛弃你们现有技术掌握AI能力的Java工程师比纯Java岗要吃香的多。即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇如何学习AGI大模型作为一名热心肠的互联网老兵我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享