
数据结构
前端筱园
专注于前端技术领域,定期分享个人原创作品
个人网站:www.dengzhanyong.com
微信公众号:【前端筱园】不错过我的每一篇推送
展开
-
学会对复杂度的计算与优化,提高程序执行效率
复杂度一词在程序的世界里经常听到,最常见的就是对于一个排序算法,我们都会去评估它的时间复杂度和空间复杂度。今天我们就来谈谈对复杂度的理解,这也是作为开发人员必备的技能之一。什么是复杂度复杂度是代码运行效率的重要度量因素,它直接影响了我们所开发出来的程序的运行效率,如果一个程序运行卡的要命,甚至出现死机的情况,我相信没有愿意去体验。所以说降低程序的复杂度是非常有必要的。复杂度的分类复杂度在程序中分为时间复杂度和空间复杂度两种。时间复杂度:顾名思义就是程序锁运行的时间。空间复杂度:程序运行所需.原创 2020-05-21 11:53:52 · 2578 阅读 · 0 评论 -
用JavaScript实现排序算法动画【第三期】选择排序
算法概述选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。主要参数平均时间复杂度 最好情况 最坏...原创 2020-03-26 22:11:12 · 848 阅读 · 0 评论 -
用JavaScript实现排序算法动画【第二期】插入排序
算法概述插入排序(Insertion sort)是一种简单直观且稳定的排序算法。将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,把数组中其余n-1个数,根据数值的大小,插入到有序数组中,直至数组中的所有数有序排列为止。这样的话,n个元素需要进行n-1趟排序!主要参数平均时间复杂度 最好情况 最坏情况 空间复杂度 排序方式 稳定性 ...原创 2020-03-24 14:10:45 · 834 阅读 · 0 评论 -
用JavaScript实现排序算法动画【第一期】冒泡排序
算法概述冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成主要参数平均时间复杂度 最好情况 最坏情况 空间复杂度 排序方式 稳定性...原创 2020-03-23 11:55:41 · 1068 阅读 · 0 评论 -
数据结构——Floyd算法(寻找最短路径)
Floyd算法Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。在计算机科学中,Floyd-Warshall算法是一种在具有正或负边缘权重(但没有负周期)的加权图中找到最短路径的算法。算法的单个执行将找到所有顶点对之间的最短路径的长度(加权)。 虽然它不返回路径本身的细节,但是可以通过对算法的简单修改来重建路径。 ...原创 2019-12-30 20:28:46 · 5406 阅读 · 1 评论 -
数据结构——图解并查集(合并树)
什么是并查集并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不...原创 2019-12-29 14:48:18 · 3653 阅读 · 2 评论