
排序
robbie.yang
这个作者很懒,什么都没留下…
展开
-
常用排序算法之插入排序
插入排序,常用排序算法之插入排序,排序算法原创 2016-04-26 17:34:45 · 678 阅读 · 0 评论 -
常用排序算法之快速排序
1.何为“快排”? 快速排序,即就是很快速,很便捷的一种排序嘛-!O(∩_∩)O~ 但是,快速排序也并非一定是快速的。如果按照最糟糕的情况来看,它的时间复杂度几乎和冒泡排序是相同的0(n2)(是什么情况呢?)。但是,平均时间复杂度是0(NlogN)。 2.基本思想 快速排序是基于一种“二分”的思想。 它将在一组无序数中,寻找一个基准数,该数将原数组一分为二,左边...原创 2016-04-24 23:25:59 · 401 阅读 · 0 评论 -
常用排序算法之冒泡排序 (C、Javascript实现)
1.“冒泡”的由来 按照气泡在水中上浮的顺序进行模拟的一种算法,一般较大的气泡上浮越快,较小的气泡则在其后。 (介是由于浮力,别问我为什么\(^o^)/~) 2.基本思想 每次比较两个相邻的元素,如果按照从大到小的顺序依次排序,一旦他们出现错误顺序,则将其相互置换。 3.算法流程(未优化) 假设有3个元素3,1,2,将这3个数按大到小的顺序进行排序,也就是说越往后的数越小...原创 2016-04-23 20:37:54 · 437 阅读 · 0 评论 -
常用排序算法之选择排序
1.简介 选择排序,即有选择性地进行排序。而这个选择的标准就是"每次遍历寻找值最小的数"。 2.选择排序的种类 分为两类:一类是简单选择排序,另一种是树形选择排序(堆排序)--这个排序会另写一篇。 3.排序过程 4.算法关键 每趟查询后的结果,将原数组分为已排序数组和待排序数组; 每次查找的最小值只与待排序数组的原创 2016-05-24 15:56:28 · 351 阅读 · 0 评论 -
常用排序算法之希尔排序
一、简介 希尔排序也是一直插入排序。直接插入排序类似于扑克牌的插牌顺序,而希尔排序是通过下标间距相同的数进行分组排序,直至整体有序排序完毕。 二、排序步骤 原始数组: a[8]={5,3,8,2,4,1,7,6}; length=8 第一趟 默认间距gap = 4 (length/2) 分为四组: 一. 5 4 二. 3原创 2016-05-25 18:33:24 · 454 阅读 · 0 评论 -
模板引擎:二、实现一个Json解析器
2.Js实现Json解析器 前言 本文主要对Json解析器的实现进行探讨。 如果想深入了解其原理,可以参考上一篇文章:模板引擎:一、理解Json解析器工作原理 项目github地址:https://github.com/yang657850144/parseJson 案例说明 例如:拿一段最简单的Json字符串举例(“{ “a”: 1 }”),要将其解析为JSON对...原创 2018-07-21 23:29:39 · 1910 阅读 · 0 评论 -
图解排序算法-冒泡排序 (Javascarpt 实现)
冒泡算法 “冒泡”的由来 按照气泡在水中上浮的顺序进行模拟的一种算法,一般较大的气泡上浮越快,较小的气泡则在其后。 核心思路:在数组遍历时,当遇到较大的数值时,将较大的数往后交换,直至本轮比较结束。然后进行下一趟比较。 时间复杂度 O(n^2) 遍历一趟需要的时间复杂度为 O(n),一共需要进行 n-1.因此,总的时间复杂度为 O(n^2). 源码实现: let arr = [20, 40,...原创 2019-03-30 11:16:58 · 338 阅读 · 0 评论 -
图解排序算法-快速排序 (Javascarpt 实现)
快速排序 核心思想: 选取一个基数,保证左边的数都小于这个基数,右边的数都大于这个基数。然后递归执行上述步骤 时间复杂度 O(nlgn~n^2) 最好情况O(nlgn): 在数组中,每次选取的基数都恰好是最数组的 n/2 的位置。 如下图: 递归的总次数就等于二叉树的层数( k ) 每一层的节点数等于 2^(k-1) 二叉树的总节点数等于: Sn=1+2+4+...+2^(k-1)...原创 2019-03-30 13:20:35 · 353 阅读 · 0 评论