数据结构
a salted fish
啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
展开
-
数据结构—堆
堆 堆数据结构是一种数组对象,它可以被视为一科完全二叉树结构。它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。最小堆:任一结点的关键码均小于等于它的左右孩子的关键码,位于堆顶结点的关键码最小。 最大堆:任一结点的关键码均大于等于它的左右孩子的关键码,位于堆顶结点的关键码最大。 #pragma once原创 2017-08-27 22:51:59 · 260 阅读 · 0 评论 -
数据结构——二叉树的创建和遍历
在学习数据结构中,除了我们学习的线性结构,还有一种特殊而且重要的树形结构。最常见的二叉树,二叉树的种类又有很多。 二叉树概念 二叉树:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的二叉树组成。 满二叉树:在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子节点都在同一层上。(满二叉树拥有的节点个数为2^k-1 k为二叉树的高度)原创 2017-09-14 17:14:58 · 542 阅读 · 0 评论 -
常见的排序算法—冒泡排序
冒泡排序 冒泡排序算法的运作如下:(从后往前) >比较相邻的元素。如果第一个比第二个大,就交换他们两个。 >对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 >针对所有的元素重复以上的步骤,除了最后一个。 >持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。我们通过仿函数的形式来实现冒泡排序的排列顺序。#include<原创 2017-10-22 20:17:30 · 636 阅读 · 0 评论 -
数据结构—Hashtable(闭散列)
哈希表是常见数据结构中一种拥有高效插入,高效查找的结构,时间复杂度为O(1)。闭散列哈希的不足之处就是随着冲突的数据增多,插入的效率也会随之变慢,为了优化闭散列哈希的效率,我们可以采取以下的方式:>1.当插入的数据占总大小的一定比率的时候,也称负载因子,我们可以对哈希表进行扩容,重新通过哈希函数求得位置插入。 >2.我们可以采用素数表的形式,来减少哈希冲突的可能。 >3.通过更好优化的哈希函数,原创 2017-11-08 19:57:05 · 511 阅读 · 0 评论 -
数据结构—开散列哈希算法
哈希表在插入和查找拥有好高的效率,当数据足够的多时,相比于平衡树,效率几乎是平衡树的两倍。 开散列哈希具有的优势就是,哈希表中存放着链表的地址,每个进来的数据通过哈希函数求得位置,存放在相应位置的链表中。查找数据时,只需要查找该数据通过哈希函数求得的位置下的链表中是否存在,就能高效的完成查找;插入时,只需要对该数据通过哈希函数求得位置的链表进行头插就可以。#include<iostream>#i原创 2017-11-12 20:50:38 · 675 阅读 · 0 评论 -
数据结构—位图
在计算机中,每一个数据都是以二进制0/1来保存,每一个字节byte包括8个bit,每一个bit存储一个0/1的信息。 一 .为什么使用位图我们可以通过对每一个bit位的操作来标识一些信息,比如当当前bit为0时,表示不存在,当当前bit为1时,表示存在。 而位图正是利用每一个bit位能标识两种不同的信息。那么我们在构建位图之前,我们先来了解下,在计算机中的位运算。 运算符 含义 &原创 2017-11-14 11:41:55 · 447 阅读 · 0 评论 -
算法—直接插入排序
直接插入排序算法的思想: 我们要把一个数插入到已经有序的数据中,选取待排序的无序数据中的第一个数据,看做为一个已经有序的数列,然后依次将其余无序数据插入到这个有序的数列中。#include<iostream>using namespace std;struct Greater{ bool operator()(int x,int y) { return x>y;原创 2017-11-20 13:45:08 · 295 阅读 · 0 评论