算法与数据结构

以下是为您整理出来关于【算法与数据结构】合集内容,如果觉得还不错,请帮忙转发推荐。

【算法与数据结构】技术教程文章

【算法与数据结构】哈希表-链地址法【代码】【图】

哈希表的链地址法来解决冲突问题将所有关键字为同义词的记录存储在同一个线性链表中,假设某哈希函数产生的哈希地址在区间[0, m - 1]上,则设立一个至振兴向量Chain ChainHash[m]; 数据结构//链表结点 typedef struct _tagNode {int data; //元素值(关键字)struct _tagNode* next; //下一个结点 }Node, *PNode;//哈希表结点 typedef struct _tagHashTable {//这里用一个联合体来解释一下,其index也即哈希值 u...

算法与数据结构 (八) HashMap源码【代码】

一 存储结构 static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next;}transient Node<K,V>[] table;内部存储的单元如上所示,整体上就是数组加链表的桶状结构。二 put操作put(key,value)内部调用的是putVal() 下面是源码 jdk1.8采用的是尾插法 final V putVal(int hash, K key, V value, boolean onlyIfAbsent,boolean evict) {Node<K,V>[] tab; Node<K,V...

算法与数据结构--图的实现、基本操作及应用

#include<iostream> #include<queue> #include<stack> using namespace std;#define INFINITY DBL_MAX //无穷大 #define MAX_VERTEX_NUM 20 //最大顶点个数 enum GraphKind //图的类型 {DG,DN,UDG,UDN//有向图、有向网、无向图、无向网 };//弧结构 typedef struct ArcCell {double adj;//权值,无权图用1表示 }AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //邻接矩阵图结构struct MGraph {int vexs[MAX_VERTEX_NUM];//顶点集合...

【算法与数据结构】图说堆排序【图】

1、堆 一棵完全二叉树 大顶堆:所有非叶子节点元素均不小于其左右子树根节点的值 小顶堆:所有非叶子节点元素均不大于其左右子树根节点的值 2、 初始化堆 ①一组无序元素R[0, 1, ..., n - 1], 先按照顺序将该组无序元素构造为一棵完全二叉树 ②从该二叉树的第一个非叶子结点开始调整,然后调整前一个结点(一定是非叶子结点),依次直到调整完根节点 ③上一步一遍完成后,再来一遍,直到该完全二叉树符合一个堆...

[算法与数据结构]使用Java泛型实现栈【代码】

题解1 实现内部类node 2 维护top为头节点的链表 3 操作 操作1:push() 操作2: pop() 操作3: isEmpty()代码package Exam;class MyStackStruct<T> {private class Node<U> {U val;Node<U> next;Node() {this.val = null;this.next = null;}Node(U val, Node<U> next) {this.val = val;this.next = next;}boolean isEmptyNode() {return this.val == null && this.next == null;}}private Node<T> top = new Node<>();public void p...

【算法与数据结构】复杂度分析【代码】【图】

本文记录了博主对算法复杂度分析,常见的几种复杂度,以及平均时间复杂度、最好/最坏时间复杂度的总结。复杂度分析  关于算法的复杂度,我们通常采用大O来进行表示,在此我们假设每行代码的执行时间都一样,为一个单位时间,然后在这个假设的基础上进行时间、空间复杂度的分析。先分析一下上面的代码,2-4行的时间复杂度为3,紧接着有两个for循环,第一个for循环的时间复杂度为n,同时第6行的时间复杂度也为n,而内部的for循环的...

白话算法与数据结构之【字典树】【代码】【图】

1. 什么是trie树 1.Trie树 (特例结构树) Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目...

算法与数据结构整理-排序

<style></style> 普通排序:使用c++的stl工具就可以完成,在头文件中加入algorithm。例如要对数组a[1]~a[n]进行排序,sort(a+1,a+n+1)即可。 下面说一些sort的拓展。sort默认的是升序,要是需要改成降序,可以自己写一个cmp比较函数, 或者也可以在头文件中加入functional,然后sort(a+1,a+n+1,greater<int>())。 greater为降序,less为升序,<>中填的是数据类型。 除了int,其它的数据结构也可以用到sort,比如vector,string。比如...

算法与数据结构(二)-数组、链表(Array、Linked List)【图】

数组与链表是两种最简单的线性数据结构。 1.数组:最左边0-8是它的下标,按照这个下标你可以随机地访问这个数组中的任意元素。右边是他的内存地址,这里的内存地址是一个示意,实际情况要复杂地多,而且还会有一套寻址的算法,还会有虚拟内存类似的东西。访问内存中任意一个数组的时间复杂度是O(1)的。如果我们需要改变数组的话,我们有两种操作,一种是插入(inserting)操作,一种是删除(deleting)操作。这里的时间复杂度不是O(1),...

算法与数据结构 (三) 二叉树的简单应用 二叉查找树,二叉堆排序【代码】【图】

一 二叉查找树 二叉查找树又叫二叉排序树,是为了解决查找的效率问题。正常情况下查找一个元素,需要O(n)的代价,但是如果查找元素有顺序,有序数组:可以用二分查找降低到 lgn 代价,但是有序链表的代价还是O(n) 因为,链表不支持随机访问,定位不到中间元素,从而不可以一次就排除掉一半元素。此时二叉查找树的出现,完美解决了这个问题,左边的全比根小,右边的全比根大。所以理想状态下也是一次淘汰一半元素(当然不理想,...

算法与数据结构 - 相关标签