数据结构
文章平均质量分 84
Programer陈
每一个热爱编程的程序员都有一个淫荡的梦想,希望能成为和硅谷里面一样的工程师。
不积跬步无以至千里,不积小流无以成江海。
展开
-
搜索结构之AVL树
AVL树概念 搜索二叉树虽然降低了查找的效率,但是如果数据有序或者接近有序,那么搜索二叉树就会退化成单枝树,搜索的时间复杂度就会变成O(n),极大的降低了效率,因此我们引入了AVL树,在向树中插入元素的时候,能保证每一个节点的左右子树的高度不会相差1,从而降低了树的高度,提高了查找的效率。 2.我们把具有一下性质的树称之为AVL树:1. 首先它是二叉搜索树。 2. 二叉树每个节点的...原创 2018-04-14 18:43:16 · 243 阅读 · 0 评论 -
排序【1】插入排序
常见排序在实际生活中,排序的运用很多,排序就是将一组杂乱无章的数据升序或者降序排成有序的序列。常见的排序算法有。 不同的排序算法适用于不同的场景下,衡量一个排序算法的标准不仅有空间复杂度,空间复杂度,还有稳定性。一个稳定的排序算法,相同的排序码在排序前后相对位置是不会发生变化的。 当然,排序也会根据数据量的情况,分为: 1.内部排序:数据可以加载到内存中进行排序。 2.外部排序:数据元...原创 2018-04-17 11:26:35 · 469 阅读 · 0 评论 -
排序【2】选择排序
选择排序算法思想:以升序为例,在整个区间中找出排序码最小的元素,如果这个元素不是这组序列中的第一个元素,那么将它和第一个元素进行交换,使得最小的元素就在第一个位置,然后缩小区间,循环执行上述操作,只到区间中只剩下一个元素。 具体步骤(升序):在区间中找到关键码最小的元素。如果不是待排序区间的第一个元素,则和带排序区间第一个元素交换。缩小待排序区间。 代码实现:void ...原创 2018-04-17 16:14:44 · 237 阅读 · 0 评论 -
排序【3】交换排序
冒泡排序基本思想:为什么叫冒泡排序呢,,是因为每一次排序就像是鱼儿吐泡泡,一个个泡泡从水底到水面会变得越来越大,泡泡就像元素,随着算法的进行,较大的元素就会到后面去。如果升序排列,那么就会对相邻两个元素进行比较,如果前者大于后者,那么就交换这了两个元素,直到最大的元素被排到最后一个位置,第一趟冒泡完成,进行第二趟冒泡,把次大的元素排到倒数第二的位置,重复这个过程。直到所有的元素都被冒泡到合适的...原创 2018-04-18 22:09:34 · 312 阅读 · 0 评论 -
排序【4】归并排序
归并排序1.基本思想: 将待排序的元素分为两个长度相等的子序列,为每一个子序列排序,然后将他们合并成一个序列。合并两个子序列的过程叫做两路归并。2.具体步骤: (1)按照类似于快速排序的道理,我们把待排序区间划分成两个长度想等的子区间。 (2)递归其子区间,直到区间里面的元素只剩下一个,我们认为这个子区间已经有序。 (3)当区间只剩下一个元素时候,每次将相邻两个区原创 2018-04-19 20:17:38 · 297 阅读 · 0 评论 -
排序【5】基数排序和计数排序
前面介绍的几种排序方式都是比较式的排序,今天,我们来介绍两种非比较排序。计数排序和基数排序。一、计数排序1.基本思想:遍历待排数组,找到数组中最大的元素,然后开辟一个比这个最大元素大1的新数组,以新数组的下标表示待排元素,统计原数组中所有元素出现的个数放在新数组相应的位置,然后把新数组中除过0次出现的其余元素,按顺序拷贝回原数组即可。2.思想流图:原创 2018-04-24 17:15:45 · 275 阅读 · 0 评论 -
搜索结构之【哈希】
查找分类在很多的时候,我们需要从元素的集合中查找出给定的关键字是否存在的过程,这个过程通常有两种结果:查找成功,查找失败。 用于搜索数据的集合,称之为搜索结构,一般是由统一类型的元素的集合。 而查找的环境分为静态环境和动态环境。 静态环境:在插入或者删除等操作前后搜索结构不会发生改变,向顺序表,链表。 动态环境:为了保证较高的搜索效率,在插入或者删除的前后搜索结构会自动进行调整,结构可...原创 2018-07-16 18:10:22 · 421 阅读 · 0 评论