![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
stinge
这个作者很懒,什么都没留下…
展开
-
插入排序
插入排序算法分析 已知n个元素的无序数组A 基本思想:将数组A看做由已排序部分B和未排序部分C组成,然后取出C中的第一个元素,并与B中的数组元素从右向左依次比较,直到找到比它小的元素,并插入其后,重复以上步骤,直到数组中C中的元素全部插入到B中,则此时B即为A数组排序后的结果。 正确性分析:(1)初始情况下,将A中的第一个元素看做B,剩余为C,显然B此时为已排序的!...2010-12-25 16:49:37 · 67 阅读 · 0 评论 -
主成分分析
定义与简介 主成分分析: 将多个变量通过线性变换以选出较少个数重要变量的一种多元统计分析方法。 在用统计分析方法研究这个多变量的课题时,变量个数太多就会增加课题的复杂性。在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠。主成分分析是对于原先提出的所有变量,建立尽可能少...2011-06-28 21:47:27 · 125 阅读 · 0 评论 -
散列表
散列表 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 * 若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。...2011-06-23 11:22:57 · 63 阅读 · 0 评论 -
快速排序
是对冒泡排序的一种改进。 基本思路:在待排序的一列数中任选一个元素,通常选第一个元素,根据这个元素,将这列数分为两部分,其中一部分为比它 小的元素的集合,另一部分都比它大。 重复以上步骤,直至每部分只有一个元素为止。 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据...2011-06-22 22:01:11 · 77 阅读 · 0 评论 -
递归法
递归:一个过程直接或间接的调用自己 注意: (1) 递归就是在过程或函数里调用自身; (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 递归算法一般用于解决三类问题: (1) 数据的定义是按递归定义的。(Fibonacci函数) (2) 问题解法按递归算法实现。(回溯) (3) 数据的结...2011-06-22 21:55:54 · 264 阅读 · 0 评论 -
希尔排序
希尔排序是插入排序算法的一种。又称 缩小增量排序 算法思想: 对于n个整数排序,将这列数按d1增量分组,对各个分组进行直接插入排序,然后缩小增量,重新分组,对分组排序,直到增量值为1时停止。 优劣 不需要大量的辅助空间,和归并排序一样容易实现。希尔排序是基于插入排序的一种算法, 在此算法基础之上增加了一个新的特性,提高了效率。希尔排序的时间复...2011-06-22 17:37:40 · 63 阅读 · 0 评论 -
简单选择排序
算法思想:每次从待排序的记录中选出关键字最小或最大的元素,顺序放在已排序的有序序列中,直到全部排完。 (1)查找待排序序列中的最小元素,与第一个元素替换。 (2)重复(1)直到为有序序列 时间复杂度 o(n^2),不稳定 //选择排序 public static void xuanze(int _d[]){ int len = _d...2011-06-22 15:19:32 · 145 阅读 · 0 评论 -
冒泡排序
算法思想:通过相邻元素之间两两比较和交换,使值小的元素前移,值大的元素后移,每一趟都会有最大的元素移到最后。 (1)首先循环进行n-1趟排序; (2)在第i趟排序时,进行n-i次两两比较 算法描述:从第一个元素开始,将每一个元素与后一位元素进行比较,如果后一个大,则交换彼此位置,否则不做操作,这张扫描一遍,可以将最大的放到数组的最后边。重复上述操作,直到没...2011-06-21 16:38:46 · 57 阅读 · 0 评论 -
“打点”算法
“打点”算法: 有一组数, 都为整型, 最小为1, 最大为255, 中间可能有重复的数字, 请尽量用时间复杂度最小的算法判断这组数中是不是有重复.先声明一个数组 int flag[256];全部置0, 遇到一个数字,比如23,就 flag[23]++;标记一下,如果flag[23]>1了,就说明有重复 类似问题:一个数组,想要显示该数组中没有重复的元素 。如:...2011-06-20 14:52:30 · 385 阅读 · 0 评论 -
静态查找算法
静态查找算法:仅对查找表进行查找操作,不改变表 一、顺序查找 算法思想:从表的一端开始,向另一端逐个按给定值kx与关键字进行比较,若找到,查找成功,并返回位置;若检测完毕,仍未找到,返回错误信息。 算法的时间复杂度:o(n) 优点:对表中数据的存储没有要求,线性链表只能进行顺序查找 缺点:当n很大时,平均查找长度达,效率低。 pa...2011-05-28 17:24:41 · 99 阅读 · 0 评论 -
数据结构_树
数据结构_树 一、树的定义 (1)有且仅有一个根节点; (2)当结点个数大于1时,其余节点可分为互不相交的子树。 递归定义 概念: 结点的度:节点拥有的子树数; 叶子(终端)结点:度为0的结点 树的度:树内各结点度的最大值 孩子:结点的子树的根,对应 双亲...2011-05-23 17:26:04 · 67 阅读 · 0 评论 -
数据结构_栈_Java实现
数据结构_栈_Java实现 一、概念2011-05-20 20:14:58 · 150 阅读 · 0 评论 -
合并排序(归并排序)
合并排序(归并排序) 合并排序是利用分治法的算法思想来解决排序问题的。 分治法:将原问题划分成n个规模较小而结构与原问题相似的子问题,递归的解决这些子问题,然后将结果合并。 基本思想:将序列分为两个子序列,并对两个子序列分别排序,之后将已排序子序列合并,即为排序结果,其中两个子序列的 排序也按照分成更小的子序列,直至分解到单个元素,即为已排序...2010-12-29 19:43:04 · 277 阅读 · 0 评论 -
【转】 大量数据处理方法总结(转)
1.Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集基本原理及要点:对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其...原创 2011-10-12 10:42:37 · 359 阅读 · 0 评论