![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 62
丑阳璐
我们只是站在父母的肩上,见识了他们未曾见过的繁华。
展开
-
06.链表
链表ok,在之前我已经把顺序表的基础知识已经分享给大家了,那我们想想看,因为每个元素都有自己的索引,就和我们都有身份证号码是一样的道理,这就使得顺序表有着高效的查询速度,在顺序表中查询元素的时间复杂度是O(1);那我们在每一次增删操作时,紧跟其后的所有元素都得进行移动,有没有办法解决呢?是有的,链表。举个例子,体育课老师按照身高将学生排好一列,老师说把你前后的同学都记准确。当快要下课时老师集合同学时,他们能够快速按照原来的顺序排好队。我举这个栗子什么意思,别急接着往下看。定义链表是一种物原创 2021-09-11 14:58:54 · 51 阅读 · 0 评论 -
05顺序表
线性表线性表是最基本,最简单最常用的一种数据结构,可以理解为我们高数中所学的数列,一个线性表是n个具有相同特性的数据元素组成的有限序列。前驱元素:若a元素在b元素的前面,则称a为b的前驱元素。后继元素:若a元素在b元素的后面,则称a为b的后继元素。特征1.第一个数据没有前驱元素,称为头节点。2.末尾元素没有后继元素,称为尾节点。分类线性表中数据的存储方式可以是顺序存储,也可以是链式存储。按照存储方式不同分为顺序表和链表。顺序表顺序表是在计算机内存中以数组形式保存的线性表,顺序存原创 2021-09-11 14:57:25 · 54 阅读 · 0 评论 -
数据结构与算法.04快速排序
快速排序首先呢,快速排序是对冒泡排序的一种改进。基本思想是:通过一趟排序将待排序的数据分为独立的两部分,其中一部分的所有数据都比另一部分的所有数据都小,然后再按照此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以完成排序。排序原理(以数组为例)1.首先设定一个分解值,通过改分界值将数组分为左右两部分;2.将>=分界值的数据放到数组右边,小于分界值的数据放到左边。此时左边部分都<=分界值,右边部分都>=分界值;3.对于左右边的数据可进行独立排序。对于左侧的数据,又原创 2021-09-06 13:06:23 · 211 阅读 · 0 评论 -
数据结构与算法.03排序高级
排序高级篇1.希尔排序随着输入规模增大,时间成本急剧上升,所以我们还要学习一些更为高级的排序算法。它的原理是选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组;对分组好的每一组数据完成插入排序;减小增长量,最小减为1,重复第二步操作。增长量的确定:int h = 1;while(h<a.length/2) { h = 2h+1;//循环结束后便可确定h的最大值 }//h的减小规则:h=h/2代码实现: public static原创 2021-09-05 20:47:43 · 104 阅读 · 0 评论 -
数据结构与算法.02排序基础
排序排序:将给定的数据按照一定的规则进行排序,比如按照商品的价格,折扣,id号等等。冒泡排序(bubble)原理:比较相邻的元素,若后一个元素较大,则进行交换 //冒泡排序(O(n^2)) public static void sort(Comparable[] a) { for (int i = a.length-1; i>0 ;i--) { for (int j = 0; j < i ; j++) {原创 2021-08-14 23:13:22 · 140 阅读 · 6 评论 -
数据结构与算法.01概述
数据结构与算法概述什么是数据结构?将元素按照一定的关系进行操作,用来组织与存储数据数据结构分类逻辑结构分类:集合结构,线性结构,树形结构,图形结构物理结构分类:顺序存储结构,链式存储结构算法指的是用着系统的方法来解决问题的策略机制,能够在有限的时间内,对一定规范的输入获得要求的输出。其实就是如何在短时间内尽可能地使用更少的内存完成相同的需求。时间复杂度分析我们需要计算算法时间的耗费情况,那如何度量算法的执行时间呢?取决于以下因素采取什么算法代码质量问题的输入规模机器执行指原创 2021-08-06 10:17:11 · 198 阅读 · 0 评论