![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 56
ReminderPlus
研究生在读
展开
-
算法1:快速排序
1.快速排序采用分治的思想。数组a[p...r]被划分为两个(可能为空)的子数组,a[p..q-1], a[q+1...r]。第一个数组中元素小于a[p],第二个数组中元素大于a[p]。解决:首先找出p的位置,然后通过递归调用快速排序,对两个子数组进行排序。步骤:1.确定基准元素a[p]; 2.从后往前扫描,若遇到小于a[p]的,将此元素赋值给a[low];否则 high--; ...原创 2018-03-12 15:15:34 · 150 阅读 · 0 评论 -
算法2:归并排序
1.归并排序(两路归并排序)利用归并思想排序,从小集合归并到大集合。步骤:分而治之,每个递归过程设计三个步骤。①分解。吧待排序的n个数分解为两个子序列,每个序列包括n/2个元素②治。把每个子序列进行归并排序,进行递归。③合并。合并两个排序好的子序列。//将数组划分 public static int[] mergesort(int []a,int low,int high){ int mi...原创 2018-03-13 15:40:46 · 104 阅读 · 0 评论 -
算法3:二分查找
1.二分查找前提:数组为有序。步骤:1.找到中间值,将数组分为三部分,a[0,mid-1],a[mid],a[mid+1,high]; 2.若等于a[mid], 返回mid; 3.小于a[mid],在a[0,mid-1]中查找; 4.大于a[mid],在a[mid+1,high]中查找;循环或者递归来实现。//循环 public sta...原创 2018-03-13 17:46:59 · 146 阅读 · 0 评论 -
算法4:堆排序
1.堆排序基本思想利用堆(最大堆,最小堆)进行排序,特殊的树形数据结构(完全二叉树)①将一个无序序列构造成一个堆。②输出堆顶元素后,调整剩余元素称为一个新堆。2.复杂度堆排序的主要运行时间耗费在初始构建堆和重建堆时的反复筛选上。构建堆的时间复杂度为o(n),重建堆的时间复杂度为o(nlogn), 堆排序对原始记录的状态不敏感,所以最好,最坏,平均情况的时间复杂度都为o(nlogn)。空间复杂度,有...原创 2018-03-29 15:09:16 · 206 阅读 · 0 评论 -
数据结构2:B树,B+树,B*树
1.B树即B-Tree(图转载)B树是一种多叉平衡查找树,红黑树是一种二叉平衡查找树,B树的多叉结构使得对于元素数量非常多的情况,树的深度不会像二叉树那么深,保证查询效率。B-Tree是为了磁盘或其他存储设备设计的一种多叉平衡查找树,相比红黑树在降低磁盘I/O方面做得更好, 许多数据库都是用B-Tree 和 B*Tree, B+Tree来存储信息。性质:m阶的B树①树中每个节点最多含有m个孩子②除...原创 2018-04-06 16:04:53 · 439 阅读 · 0 评论 -
数据结构1:红黑树
红黑树是一颗二叉平衡查找树。一般情况下,二叉查找树的操作执行时间为O(lgn),但是,在二叉查找树中为有序的数据后,例如递增的全在右子树上,递减的都在左子树上,就会退化成一个具有n个节点的线性链,运行时间就会变成O(n)。红黑树的出现就会使树变的相对平衡,使之时间复杂度稳定在O(lgn)。使用情况:不断地有数据插入性质: 每个节点不是红色就是黑色 根节点总是黑色 如果节点是红色,则它的子节点必是黑...原创 2018-04-06 16:15:12 · 94 阅读 · 0 评论