尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
数据结构的基础笔记
文章目录1.数据排序1.1 简单排序1.2.1 冒泡排序1.2.2选择排序1.2.3插入排序1.2高级排序1.2.1希尔排序1.2.2归并排序1.2.2.1 递归快速排序1.数据排序1.1 简单排序Comparable接口1.2.1 冒泡排序是一种稳定排序方法!1.比较相邻的元素。如果前一个元素比后一个元素大就交换这两个元素的位置。2.对每一对相邻元素做同样的工作从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。在这里插入代码片packagecom.itheima;publicclasstest1{publicstaticvoidmain(String[]args){int[]arr{4,5,6,3,2,1};intidert;for(inti6;i0;i--){for(inti10;i15;i1){if(arr[i1]arr[i11]){idertarr[i1];arr[i1]arr[i11];arr[i11]idert;}}}for(inti0;iarr.length;i){System.out.print(arr[i]);}}}1.2.2选择排序是一种不稳定排序方法!选择排序是一个在一串数组里面,先定义索引0为最小值,然后就比较下一位与最小值的大小,如果下一位比最小值小的话,就像下一位数值赋为最小值,(更换最小值),一直比较到最后,将最小值按顺序填入首位,依次往下填入,1.2.3插入排序是一种稳定排序方法!插入排序里面,可以理解为一个正三角两个for循环,外循环用于选定未排序的第一个数字,倒叙的内循环用于将这个数字与已经排好顺序的数组进行比较,(注意我原本再内循环if语句中对两个数进行了换位,按照冒泡顺序进行操作了,但是这个是已经排好序的数组所以不能进行换位,只有在退出内循环时说明比大小已经完成了,当前的i值就是这个数的索引,再将其放入其中)在这里插入代码片packagecom.itheima;importjava.util.Arrays;publicclasstest4{publicstaticvoidmain(String[]args){intarr[]{4,3,2,10,12,1,5,6};inttemp;inti;for(intj1;jarr.length;j){temparr[j];for(ij;i0;i--){if(temparr[i-1]){arr[i]arr[i-1];}else{break;}}arr[i]temp;}System.out.println(Arrays.toString(arr));}}1.2高级排序1.2.1希尔排序是一种不稳定排序方法!高级排序语言,这个比较麻烦,首先定义了一个数组,然后定义了一个分组数(用来确定每组多少数),首先让J等于gap然后将索引为J的数字存入temp里面,作为临时存储地方,然后到了关键的地方,定义一个i,然后需要保证,igap并且分组后的数字小于前面的数字,就对其进行插入排序,将,前面的数存放到后面的地址里面,然后进行,i-gap让i转变为前面数的地址,然后将,原本最开始后面数的值存入,完成交换,以上是最内部循环,而中间循环则用于遍历将jgap后面的数字都进行分组式比大小交换,然后最外层,用于更改gap的值,用于划分每组的数据与分组,该排序方法 不好理解,底层理解不清楚在这里插入代码片importjava.util.Arrays;publicclasswerwe{publicstaticvoidmain(String[]args){int[]arr{4,5,6,3,2,1};for(intgaparr.length;gap0;gap/2){for(intjgap;jarr.length;j){inttemparr[j];inti;for(ij;igaptemparr[i-gap];i-gap){arr[i]arr[i-gap];}arr[i]temp;}}System.out.println(Arrays.toString(arr));}}1.2.2归并排序1.2.2.1 递归是一种稳定排序方法!递归排序,是一个利用一个方法在方法内调用本身方法的技术,利用一直调用本身方法,进行类似循环的操作,来求n的阶乘,但是要事先对其进行划定规范.在这里插入代码片packagecom.itheima;publicclasstest7{publicstaticvoidmain(String[]args){System.out.println(surtrt(5));}publicstaticintsurtrt(intn){if(n1){return1;}returnn*surtrt(n-1);}}快速排序是一种不稳定排序方法!快速排序运行速度超级快,首先定义start和end,然后定义递归的出口,然后定义基准数baseNumber,然后再while外循环里面定义start不等于end,再while内循环1里面,endstart||arr[end]baseNumber意思为,当arr[end]小于基准数锁定这个数利用break退出去,while内循环2 里面,end start|| arr[end]baseNumber意思为,当arr[start]大于基准数时,锁定利用break推出去,然后将锁定的两个数进行交换,当startend时将arr[i]与arr[start]进行交换,然后利用递归让分开的两个组分别调用quickSort方法,然后进入递归算法里面,当startend的时候,作为递归的结束入口,在这里插入代码片packagecom.itheima;importjava.util.Arrays;publicclasstest22{publicstaticvoidmain(String[]args){int[]arr{6,1,2,7,9,3,4,5,10,8};quickSort(arr,0,arr.length-1);System.out.println(Arrays.toString(arr));}publicstaticvoidquickSort(int[]arr,inti,intj){intstarti;intendj;if(startend){return;}intbaseNumberarr[i];// 利用循环找要交换的数据while(start!end){while(true){if(endstart||arr[end]baseNumber){break;}end--;}while(true){if(endstart||arr[start]baseNumber){break;}start;}inttemparr[end];arr[end]arr[start];arr[start]temp;}inttemparr[i];arr[i]arr[start];arr[start]temp;quickSort(arr,i,start-1);quickSort(arr,start1,j);}}
RELATED

相关推荐

C++模板元编程:编译期类型计算与零开销抽象实战

C++模板元编程:编译期类型计算与零开销抽象实战

1. 这不是“写代码”,是在编译期“造机器”——C模板元编程到底在干什么?很多人第一次听说“C模板元编程”,脑子里浮现的可能是“晦涩”“难懂”“只有编译器开发者才碰的东西”。但事实恰恰相反:它早已悄悄跑在你每天用的std::ve…

📅 2026/10/16 3:11:34
Spring Boot 3.5.16 自带的 Tomcat 10.1.55 中了哪些 CVE?其中一条是修上一个漏洞时带进来的

Spring Boot 3.5.16 自带的 Tomcat 10.1.55 中了哪些 CVE?其中一条是修上一个漏洞时带进来的

文中的数字都是 2026-10-13 读到的。GitHub 的审核状态和 Spring Boot 的版本会变,结论请以你看到这篇文章当天的实际情况为准。 先说结论 Tomcat 官方在 2026 年 8 月和 9 月各修了一批漏洞,共 22 条: 批次条数修复版8 月批109.0.121 / 10.1.58 / 11.0.259 月批(官方写 2026…

📅 2026/10/16 3:11:34
MCP实战手记(十一):MCP接飞书,从机器人到事件订阅的三层深度接入

MCP实战手记(十一):MCP接飞书,从机器人到事件订阅的三层深度接入

本文聚焦飞书三层接入(机器人Webhook/自建应用卡片/长连接事件订阅)钉钉横向对比。0. 开篇:为什么从飞书开始 CSDN上"飞书对接"的实战文不少,但"飞书长连接事件订阅MCP双向闭环"的完整跑通几乎空白。飞书开放…

📅 2026/10/16 3:06:34
MORE NEWS

更多资讯

📰

文件时间属性修改全攻略:批量操作、工具选型与避坑指南

提到“文件时间属性修改神器”,我第一反应就是笑——因为上周我刚用它救回一批老照片的拍摄时间,家里母上大人差点把相机时钟错乱的历史照片全删了。这玩意儿听起来冷门,但真到用的时候,谁用谁知道:整理文件归档、修复…

📰

电视播不了视频怎么办?格式、投屏、解码问题排查指南

电视画面突然提示“不支持此音频格式”,要么U盘里的电影放到电视上根本没显示,要么手机投屏到电视一直转圈圈……这些问题我碰到过太多次了。身边朋友一遇到就问我“是不是电视坏了,要不要换一台”。说实话,绝大多数情况下真不是电…

📰

X startup failed 报错排查:服务器安装图形界面失败怎么办

机房远程控制台里,我盯着屏幕看了快十分钟,引导加载完内核后,没有出现预想中的图形安装界面,只留下一行鲜红的字:X or window manager startup failed, falling back to mode然后安装程序自动切到了一个简陋的文本界面…

📰

Java调用海康威视HCNetSDK实现无浏览器视频预览

简介:本资源是一份面向Java开发者与物联网视频监控领域初学者的实战型SDK集成方案,聚焦海康威视摄像头预览功能的完整Java实现。资源提供可直接运行的工程代码与配套本地库,解决Java调用C/C底层SDK的技术难点,尤其适用于需快速接入…

📰

微信聊天记录导出指南:用 WeChatMsg 把消息变成 HTML、Word 与 CSV 文件

微信聊天记录导出指南:用 WeChatMsg 把消息变成 HTML、Word 与 CSV 文件 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_…

📰

HTML常用标签深度实战:语义化、表单与可访问性避坑指南

写过几年页面&#xff0c;我一直有个感受&#xff1a;HTML标签看起来是最入门的东西&#xff0c;真正上手项目之后&#xff0c;反而是最容易被低估的一环。刚接触前端的人&#xff0c;对着教程敲几遍<div>、<p>、<img>&#xff0c;觉得“这不就是几个标签吗”…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬