https://blog.csdn.net/guoweimelon/article/details/50904231 ...
分类:
编程语言 时间:
2020-03-18 11:58:23
阅读次数:
91
@[toc] 插入排序 二分插入排序 选择排序 选择排序 冒泡排序 快速排序 堆排序 归并排序 桶排序 计数排序 ...
分类:
编程语言 时间:
2020-03-18 09:53:29
阅读次数:
66
前言 工作已经有一段时间了,有的时候会跟同事们打趣:“ 如果你让我现在去手写一个快速排序,我怕是真的写不出来 ”。 如果不接触一段时间的算法,真的很容易就忘了。不信?你现在想想你自己能不能手写一个堆排序。 经历过校招的人都知道, 算法和数据结构 都是不可避免的。 在笔试的时候,最主要的就是靠算法题。 ...
分类:
编程语言 时间:
2020-03-16 14:32:48
阅读次数:
69
基本原理就不做介绍了, 很基础的数据结构课程知识.私下回顾即可,主要学习代码. 1.双指针 https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/description/?utm_source=LCUS&utm_mediu ...
分类:
编程语言 时间:
2020-03-15 13:20:39
阅读次数:
70
如何手写一个堆? 1. 插入一个数 2. 求集合当中的最小值 3. 删除最小值 4. 删除任意一个元素 5. 修改任意一个元素 堆的基本结构。 性质: 堆是一颗完全二叉树。按照序号来的 除了最后一层,其他都是满的 每一个点都是小于等于儿子 存储 用一维数组来存 x的左儿子是2x,x的右儿子是2x+1 ...
分类:
编程语言 时间:
2020-03-15 11:30:27
阅读次数:
60
解题思路: 1、插入排序的特点:从左往右扫描,前段数据非递减,当出现第一个递减的位置,再和原数据比较,此后若数据位置不变,则为插入排序。 2、堆排序的特点:从第2个位置起,一直找到第一个比首位数据大的数据止。 #include <stdio.h> #include <string.h> int Ju ...
分类:
编程语言 时间:
2020-03-13 23:32:22
阅读次数:
145
堆排序是一种树形选择排序,特点:L[1...n]视为一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲与孩子节点的内在关系,在当前无序区中选择关键字(最大或最小)元素。 大顶堆:L(i)>L(2i) && L(i)>L(2I+1) 小顶堆:L(i)<L(2i) && L(i)<L(2I+1) 例: ...
分类:
编程语言 时间:
2020-03-12 10:03:57
阅读次数:
75
对常见排序算法进行总结,下图可做参考: 在介绍排序算法之前先明确几个概念: 1、时间复杂度:从序列的初始状态到最终排序好的结果状态所花费的时间度量,主要取决于变换、移位等操作语句的执行次数。 2、空间复杂度:从序列的初始状态到最终状态所花费的空间开销,即排序过程中所需要开辟的新的内存空间。 3、稳定 ...
分类:
编程语言 时间:
2020-03-11 12:40:11
阅读次数:
71
1.堆排序 堆是一个完全二叉树。 完全二叉树: 二叉树除开最后一层,其他层结点数都达到最大,最后一层的所有结点都集中在左边(左边结点排列满的情况下,右边才能缺失结点)。 大顶堆:根结点为最大值,每个结点的值大于或等于其孩子结点的值。 小顶堆:根结点为最小值,每个结点的值小于或等于其孩子结点的值。 对 ...
分类:
编程语言 时间:
2020-03-10 11:51:47
阅读次数:
80
就是秀一波操作辣 1 #include <iostream> 2 using namespace std; 3 const int N=1e3+20; 4 int ans[N],cnt=1; 5 struct heap{ 6 int a[N],n; 7 int top(){return a[1];} ...
分类:
编程语言 时间:
2020-03-10 11:46:39
阅读次数:
52