![](https://img-blog.csdnimg.cn/20190904142748319.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
justry_deng
很多不会不懂不了解不明白,我只是一个善于记录的普通coder
展开
-
【基础排序】之冒泡排序
虽然很简单,但也要踏踏实实一步一步的进行学习啊!算法评价: 时间复杂度:平方阶。 空间复杂度:常量阶。 稳定性:稳定。 适用数据规模量:小规模。 算法复杂度与数据规模量关系图:算法原理简述(小白可读):冒泡排序的原理:若一个数组中共有n个元素,则一共会比较n-1轮,每一轮又会比较很多次。第一轮, 第一次:第一个数和...原创 2019-11-25 13:01:44 · 349 阅读 · 0 评论 -
【高级排序】之快速排序
算法评价: 时间复杂度:。 注:快速排序最坏情况下的时间复杂度是,其平均时间复杂度是。 空间复杂度:。 稳定性:不稳定。 适用数据规模量:大规模。 注:快速排序通常是实际排序中的最好的选择,因为它的平均性能非常好。快速排序的平均时间复杂度为, 相比起基本排序(冒泡、插入、选择排序)的要快得多,相比起同样时间复杂度的归并排序,快速排序的 ...原创 2019-05-11 19:22:13 · 458 阅读 · 3 评论 -
【数据结构】之单向链表、双端(单向)链表、循环(单向)链表
单向链表、双端(单向)链表、循环(单向)链表示意(简)图:单向链表:只有一个指针指向头结点。双端(单向)链表:有一个指针指向头结点,还有一个指针指向尾节点。循环(单向)链表:指向形成一个闭环。双端(单向)链表的Java实现(简单示例):注:单向链表、双端(单向)链表、循环(单向)链表的实现思路几乎一样,这里以实现双端(单向)链表示例。/** * 双端链表 简...原创 2019-05-21 13:54:45 · 1500 阅读 · 0 评论 -
【数据结构】之队列
笔者日常: 感谢孤尽(花名)大侠今天给我解答线程安全的问题,在这里推荐孤大侠书籍《码出高效》,带你深入基础,走进阿里规范!目录队列基本知识队列的常见实现方式 数组实现 链表实现队列的常见分类 数组队列:基于数组的原理进行实现。 链表队列:基于链表的原理进行实现。Java对上述队列的代码实...原创 2019-05-19 02:43:42 · 288 阅读 · 1 评论 -
【高级排序】之归并排序
算法评价: 时间复杂度:。 空间复杂度:。 稳定性:稳定。 适用数据规模量:大规模。 算法复杂度与数据规模量关系图:算法说明: 如下图所示,先将待排序数组进行拆分(拆分规则多样,下图为二分法),然后再将拆分开的各个子元素进行归并(归并方式多样,下图为两路归并),得到多个小的有序的数组集合,然后再将各个有序的小数组集合归并……最终得到...原创 2019-05-09 00:59:44 · 208 阅读 · 0 评论 -
【基础排序】之选择排序
算法评价: 时间复杂度:平方阶。 空间复杂度:常量阶。 稳定性:不稳定。 适用数据规模量:小规模。 算法复杂度与数据规模量关系图:算法原理简述(举例说明): 总共n个学生无序随机选择座位(座位有序号1、2、3……n),现在需要根据学生学习成绩好坏来分配座位(规则是:成绩越好,座位号越靠前),分配开始:第一步:给座位1分一个学生,...原创 2019-04-30 12:16:58 · 251 阅读 · 0 评论 -
【基础排序】之插入排序
算法评价: 时间复杂度:平方阶。 空间复杂度:常量阶。 稳定性:稳定。 适用数据规模量:小规模。 注:若数据本身就有部分是有序的,那么插入排序比冒泡排序更高效。 算法复杂度与数据规模量关系图:算法原理简述(举例说明):就像我们玩斗地主一样,上手一副牌,我们先要对其进行排序。第一步:左边第二张牌Y和左边第一张牌X比较。若Y<X,那么将...原创 2019-04-29 14:42:34 · 220 阅读 · 0 评论 -
【高级排序】之桶排序
算法评价:时间复杂度:O(N)。N为待排序元素的个数。注:前提是数据服从均匀分布,它的平均时间复杂度才为O(N)。注:时间复杂度实际为,再通过一些列化简后,可得到O(N)的时间复杂度,具体化简 过程可详见《算法导论》。注:即使输入数据不服从均匀分布,桶排序也仍然可以在线性时间内完成。只要输入数据满足下列性质:所有桶的 大小(即:桶内元素的个数)的平方和与...原创 2019-05-03 19:21:15 · 1505 阅读 · 0 评论 -
时间复杂度、空间复杂度、稳定性、数据结构基础概念
开启算法与数据结构学习之旅咯~时间复杂度与空间复杂度是算法的两大考量标准。稳定性也是算法的一个重要标准。时间复杂度: 时间复杂度是对处理规模量为n的数据,执行算法所花的时间的度量。注:站在宏观上(以大时间单位)来讲,程序在计算机上执行的速度是非常快的,各种算法的执行消耗时间几乎一样, 所以比较消耗了的时间也就失去了意义,所以时间复杂度也可以理解是:处理规...原创 2019-04-24 01:50:39 · 1179 阅读 · 0 评论 -
【数据结构】之双向链表、双端(双向)链表、循环(双向)链表
双向链表、双端(双向)链表、循环(双向)链表示意(简)图:声明:下面各图中,箭头指向的是整个节点,而不是指向节点中的prior或next。双向链表:只有一个指针指向最开始的结点。双端(双向)链表:有两个指针分别指向两端的节点。循环(双向)链表:指向形成一个闭环。双端(双向)链表的Java实现(简单示例):注:双向链表、双端(双向)链表、循环(双向)链表的实现思路...原创 2019-05-21 21:49:19 · 1837 阅读 · 0 评论