数据结构算法
咚咚雨咚咚
学以致用!
展开
-
归并排序
具体看代码!有注解! 笔记! public class MergeSort { static void mergeSort(int[] arr,int n){ Totle_mergeSort(arr, 0 ,n-1); } static void Totle_mergeSort(int[] arr,int l,int r){ if ( l>=r ) {//...原创 2019-08-01 14:44:38 · 96 阅读 · 0 评论 -
堆的基本存储
代码都有详细的注解!!!!!!!!!!!! 主要用于动态数据的维护 二叉堆又分为最大堆个最小堆 最大堆:必须是一个完全二叉树,堆中的节点不大于其父节点的值。 完全二叉树: 除了最后一层节点的个数以外,其它层节点的个数必须是最大值(满的)。 最后一层的节点数虽然可以不是最大数,但必须全部靠左。 #include <iostream> #include <algorit...原创 2019-08-08 15:20:30 · 943 阅读 · 0 评论 -
QuickSort 快速排序思想
目录 1.快速排序 思想:选定一个基点,按基点值把数组分为两部分(两部分数组都是无序的),比部分大于该基点值,一部分小于该基点值,然后再对这两部分分别进行递归排序 2.双路快排 思想:双路快排的优化是针对有大量重复元素的情况,也就是访问元素等于标定元素的情况 1.快速排序 思想:选定一个基点,按基点值把数组分为两部分(两部分数组都是无序的),比部分大于该基点值,一部分小于该基点值,然后...原创 2019-08-06 15:58:10 · 190 阅读 · 0 评论 -
堆排序总结 以及优化
排序算法总结: 1、原地排序:不需开辟额外空间,在数组本身进行排序 2、快速排序使用递归算法实现,递归 logn 层就需要 logn 层的栈空间来保存每次递归过程中的临时变量,以供递归返回的时候继续使用。 3、归并排序也使用了递归实现,额外空间应该是n+logn的,但由于logn<n,因此为O(n) 4、相等元素在排序前后相对位置未发生改变的称为稳定排序 排序算法的稳定性 排序算法的...原创 2019-08-13 15:09:12 · 318 阅读 · 0 评论 -
Heapify 堆排序 自底向下
Heapify将数组构造成堆:从第一个非叶子节点开始,即count/2使用shiftdown 直接输入数组的方式构造堆,其复杂度为O(n); 将n个元素挨个插入空堆来构造堆,复杂度是O(nlogn) #include <iostream> #include <algorithm> using namespace std; /* Heapify将数组构造成堆:从第一个非...原创 2019-08-11 15:55:14 · 259 阅读 · 0 评论 -
并查集
目录 First 定义 一、连接问题 二、路径问题 Second 效率慢 Union Find Ex1: Ex2: Third 并查集的主流 Quick Union First 定义 一、连接问题 网络中节点间的连接状态 1.网络是个抽象概念:用户之间形成的网络 2.数据库中的音乐,电影,书记 数学中的集合类实现 二、路径问题 连接问题...原创 2019-08-20 18:00:26 · 180 阅读 · 0 评论 -
二分搜索树
目录 1.二分查找法,在有序数组arr中,查找target ~~!!!有序数组!!!~~ 2.二分搜索树的查找于插入 不一定是完全二叉树 3.二分搜索树的遍历 深搜 以及层序遍历 广搜 1.二分查找法,在有序数组arr中,查找target ~~!!!有序数组!!!~~ #include <iostream> using namespace ...原创 2019-08-17 15:07:58 · 129 阅读 · 0 评论