
数据结构与算法
月雲之霄
这个作者很懒,什么都没留下…
展开
-
1. 排序算法
一、概述假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。二、冒泡排序算法1. 图解:2. 代码:#include <iostream>#...原创 2019-04-18 10:41:01 · 535 阅读 · 1 评论 -
数据结构算法目录
《数据结构与算法目录》二分查找总结 快速排序算法 堆排序算法 归并排序算法原创 2019-05-29 21:38:44 · 331 阅读 · 0 评论 -
进制转换习题
题目:进制转换解法:#include <iostream>#include <vector>#include <algorithm>using namespace std;long long nums, k;void solution(long long nums, long long k){ vector<int> ...原创 2019-09-06 16:39:55 · 805 阅读 · 0 评论 -
二叉排序树
一、二叉排序树简介二叉排序树,又叫二叉查找树,它或者是一棵空树;或者是具有以下性质的二叉树:若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值; 它的左右子树也分别为二叉排序树。二、二叉排序树的创建假设我们要为数组 a[] = {62, 88, 58, 47, 35, 73, 51, 99, 37, 9...原创 2018-08-15 14:37:11 · 13021 阅读 · 3 评论 -
【排序算法】计数排序
当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组B的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量内存。计数排序是用来排序0到100之间的数字的最好的算法,但是它不适合按字母顺序排序人名。但是,计数排序可以...原创 2018-07-19 21:28:21 · 230 阅读 · 0 评论 -
红黑树
如果我把二叉查找树的每个结点都涂上红色或者黑色。如果它满足下面的5个性质,那么我们就称它为红黑树(Red Black Tree):每个结点不是红色就是黑色。 根结点是黑色的。 每个叶子结点(NIL)都是黑色的。 如果一个结点是红色的,那么它所有的孩子都是黑色的。 对于每一个结点,从当前结点到后代的叶子的路径上包含黑色结点的数量是相同的。根据红黑树的性质,我们可得出下面的结论:具有n内...转载 2019-06-04 15:22:24 · 211 阅读 · 0 评论 -
二分查找总结
二分查找法作为一种常见的查找方法,将原本是线性时间提升到了对数时间范围,大大缩短了搜索时间,具有很大的应用场景,而在LeetCode中,要运用二分搜索法来解的题目也有很多,但是实际上二分查找法的查找目标有很多种,而且在细节写法也有一些变化。之前有网友留言希望博主能针对二分查找法的具体写法做个总结,博主由于之前一直很忙,一直拖着没写,为了树立博主言出必行的正面形象,不能再无限制的拖下去了,那么今天就...原创 2019-05-22 11:39:07 · 188 阅读 · 0 评论 -
选择排序算法
选择排序算法:#include <iostream>#include <vector>using namespace std; void selectsort(vector<int>& res){ int n = res.size(), min; for (int i = 0; i < n - 1; ++i) ...原创 2019-08-16 21:49:15 · 92 阅读 · 0 评论 -
《数据结构与算法》
序号 内容 1 排序算法概念 2 快速排序算法 3 堆排序算法 4 归并排序算法 ...原创 2019-09-01 19:11:06 · 137 阅读 · 0 评论 -
平衡二叉树
一、AVL树简介AVL树的名字来源于它的发明作者G.M.Adelson-Velsky 和 E.M.Landis。AVL树是最先发明的自平衡二叉查找树(Self-Balancing Binary Search Tree,简称平衡二叉树)。平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉排序树:它的左子树和右子树的深度之差(平衡因子)的绝对值不超过1,且它的左子树和右子...原创 2018-08-15 17:12:47 · 114319 阅读 · 41 评论 -
冒泡排序算法
冒泡排序1. 动态演示:解法一:#include<iostream>#include<algorithm>using namespace std;void BubbleSort(int arr[], int n){ bool exchange; for (int i = 0; i < n - 1; ++i) ...原创 2018-07-30 19:12:41 · 218 阅读 · 0 评论 -
算法 | 快速排序
【算法图解】:数据结构教程李春葆版P3781. 递归代码:#include<iostream>#include<vector>using namespace std;void quicksort(vector<int> &v, int left, int right){ if (left < right) {...原创 2018-07-15 21:07:57 · 195 阅读 · 0 评论 -
归并排序算法
归并排序算法1. 分阶段:可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以理解为就是递归拆分子序列的过程,递归深度为logn。2. 治阶段:再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1, 2...原创 2019-08-03 14:09:23 · 248 阅读 · 0 评论 -
堆排序算法
堆排序算法: (算法图解:参考链接)#include<iostream>#include<vector>#include<algorithm>using namespace std;void heapAdjust(vector<int>& arr, int i, int len){ int left, right,...原创 2019-04-14 15:29:48 · 264 阅读 · 0 评论 -
快速排序算法
方法一:#include <iostream>#include <vector>using namespace std;void Quick_Sort(vector<int> &data, int left, int right){ if (left < right) { int i = left,...原创 2019-04-18 10:07:53 · 189 阅读 · 0 评论 -
希尔排序
using namespace std; vector<int> ShellSort(vector<int> list){ vector<int> result = list; int n = result.size(); for (int gap = n / 2; gap > 0; gap /= 2) { ...原创 2019-04-18 11:13:15 · 111 阅读 · 0 评论