
数据结构
Vihaclue
这个作者很懒,什么都没留下…
展开
-
数据结构
矩阵的压缩存储:http://blog.youkuaiyun.com/qq_15037231/article/details/52294527转载 2018-01-28 15:56:57 · 173 阅读 · 0 评论 -
冒泡排序
转载请注明出处。假设升序排列n个元素。1、比较相邻的元素。如果前一个比后一个大,交换。若小于或等于,则不改变顺序,所以冒泡排序是稳定的。2、对每一对相邻元素做同样的工作。遍历完一次后,最后的元素会是最大的数。3、第二次对前n-1个元素重复上述操作。最后一个元素是最大的,不用管。4、如此重复n-1次,最后一次比较前两个元素。时间复杂度:历次遍历依次需要比较n-1次,n-2...原创 2018-08-04 14:18:00 · 251 阅读 · 0 评论 -
选择排序
转载请注明出处。假设升序排列n个元素。1、在n个元素中找到最小的和第一个元素交换,选择排序不稳定。2、在后n-1个元素中找到最小的和第二个元素交换。3、以此类推,不断扩大有序区的范围。时间复杂度:历次遍历依次需要比较n-1次,n-2次,。。。,1次。总比较次数为n(n-1)/2。时间复杂度为O()。测试代码:#include<iostream>#...原创 2018-08-04 15:19:55 · 123 阅读 · 0 评论 -
直接插入排序
转载请注明出处。假设升序排列n个元素。1、将序列分为有序区和无序区,排序前,有序区元素个数为1,无序区个数为n-1。2、将无序区的第一个元素插入到有序区,插入位置通过比较确定,直接插入排序是稳定的排序算法。3、插入过程中需要向右移动插入位置后的元素。时间复杂度:最坏情况下,比较次数为n(n-1)/2,时间复杂度为O()。测试代码:#include<iostr...原创 2018-08-04 16:40:29 · 172 阅读 · 0 评论 -
快速排序
转载请注明出处。快速排序采用的思想是分治思想。分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可以得到原问题的解。下面这张图会说明分治算法是如何进行的:将cn分成了两个cn/2,转而分成了cn/4,cn/8......我们通过这样一层一层的求解规模小的子问题,将其合并之后就能求出原问题的解。假设升序排列n个元素。...原创 2018-08-04 23:49:41 · 158 阅读 · 0 评论 -
归并排序
转载请注明出处。归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。假设升序排列n个元素。1、将序列等分成两个子序列,0到第(0+n-1)/2个元素为第一个序...原创 2018-08-05 14:00:07 · 140 阅读 · 0 评论 -
广义表运算
广义表是对线性表和树的推广,并且具有共享和递归特性的广义表可以和有向图(见第7章)建立对应,因此广义表的大部分运算与这些数据结构上的运算类似。 在此,只讨论广义表的两个特殊的基本运算:取表头head(Ls)和取表尾tail(Ls)。 根据表头、表尾的定义可知:任何一个非空广义表的表头是表中第一个元素,它可以是原子,也可以是子表,而其表尾必定是子表。 【例】 head(L)=a, t...转载 2018-08-19 18:59:25 · 4921 阅读 · 0 评论 -
数学-kd树
转自:https://zhuanlan.zhihu.com/p/23966698导语:在上一篇《kd 树算法之思路篇》中,我们介绍了如何用二叉树格式记录空间内的距离,并以其为依据进行高效的索引。在本篇文章中,我们将详细介绍 kd 树的构造以及 kd 树上的 kNN 算法。作者:肖睿编辑:宏观经济算命师本文由JoinQuant量化课堂推出,本文的难度属于进阶(下),深度为 level...转载 2019-03-02 11:24:48 · 300 阅读 · 0 评论