数据结构
漫玥刚花
这个作者很懒,什么都没留下…
展开
-
查找(一)史上最简单清晰的红黑树讲解
我们使用符号表这个词来描述一张抽象的表格,我们会将信息(值)存储在其中,然后按照指定的键来搜索并获取这些信息。键和值的具体意义取决于不同的应用。符号表中可能会保存很多键和很多信息,因此实现一张高效的符号表也是一项很有挑战性的任务。我们会用三种经典的数据类型来实现高效的符号表:二叉查找数、红黑树、散列表。 二分查找 我们使用有序数组存储键,经典的二分查找能够根据数...转载 2018-07-25 14:30:53 · 533 阅读 · 0 评论 -
查找(二)简单清晰的B树、Trie树详解
查找(二) 散列表 散列表是普通数组概念的推广。由于对普通数组可以直接寻址,使得能在O(1)时间内访问数组中的任意位置。在散列表中,不是直接把关键字作为数组的下标,而是根据关键字计算出相应的下标。使用散列的查找算法分为两步。第一步是用散列函数将被查找的键转化为数组的一个索引。我们需要面对两个或多个键都会散列到相同的索引值的情况。因此,第二步就是一个处理碰撞冲突的过程,...转载 2018-07-25 14:31:41 · 131 阅读 · 0 评论 -
排序(一)归并、快排、优先队列等(图文详解)
初级排序算法 选择排序 思想:首先,找到数组中最小的那个元素。其次,将它和数组的第一个元素交换位置。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。 【图例】图中,x轴方向为数组的索引,y轴方向为待排序元素的值。 选择排序有两个很鲜明的特点:运行时间和输入无关。为了找出最小的元素而扫描一遍数组并不能为下一...转载 2018-07-25 14:55:12 · 508 阅读 · 0 评论 -
Java实现几种常见排序方法
日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。...原创 2018-07-16 16:30:07 · 113 阅读 · 0 评论