![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 77
xxpresent
这个作者很懒,什么都没留下…
展开
-
【数据结构】广义表
一、问题概述广义表是非线性的数据结构,是由若干个元素组合而成的,广义表中可以有子表,类似这样的:我们以C=(a,b,(c,d))为例,将它定义为这样的数据结构:我们会给定字符串的形式,如:char * str = "(a,b,(c,d))"; 然后将它转化为如上的数据结构。二、解决办法(1)将符号'('看作是头节点,然后将是数值的部分原创 2016-12-12 20:48:51 · 711 阅读 · 0 评论 -
快速排序--全集
快速排序:一听名字就知道这种排序很快的,是吧?没错,它是一种效率比较高的排序算法。快速排序采用的是分治的思想。比如,将一串数中的一个元素作为基准,然后将比它小的数排在它的左边,比它大的数排在它的右边。将作为基准的那个元素排在正确的位置。然后通过递归,依次将所有的元素都排好。(实质就是递归子问题)在这里,快速排序也有几种不同的方式,下面我给大家一一叙述吧。快速排序的几种方法:1.原创 2017-03-05 17:12:20 · 432 阅读 · 0 评论 -
排序(Sort)--【一】
排序,对于大家再熟悉不过了吧。我们之前在学习c语言的时候接触过的冒泡排序,选择排序等。今天给大家介绍两种新的排序。1、直接插入排序升序排列:将第一个数确定好,从下标为1的数开始插入,如果插入的数比前一个数大,就插入到前一个数后的位置。否则,将前一个数的位置后移,再与再往前的数比较,依次类推。时间复杂度为:O(N*N) 最好情况:O(N)主要实现代码(vs原创 2017-02-24 19:49:42 · 628 阅读 · 1 评论 -
哈希拓展--布隆过滤器
一、问题概述 布隆过滤器是由布隆提出来的,是由一个很长的二进制序列和一系列的映射函数组成。主要用于检测一个元素是否在一个集合中。当然在设计计算机软件时,我们也经常会判断一个元素是否在一个集合中。比如:在字处理软件中,需要检查一个英语单词是否拼写正确,(即是否在字典中),在网络爬虫里,这个网站是否被访问过。最直接的方法就是将元素都存入计算机中,遇到一个新元素时,将它和元素进行比较原创 2017-02-23 20:53:09 · 521 阅读 · 0 评论 -
海量数据处理--位图(BitMap)
对于海量数据这个词,大家不难理解吧。主要是针对给定的数据量特别大,占用内存特别大的情况。那么和位图有什么关系呢。看下面一个腾讯的海量数据的例子吧。例:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 对于这道题,我们给了40亿个不重复的无符号整数,一个整数是4个字节,那么就是40*4=160亿个字节,大概是16G的内存。显然在内原创 2017-02-22 17:54:14 · 1410 阅读 · 1 评论 -
哈希表(闭散列、拉链法--哈希桶)
哈希表,也称散列表,是一种通过key值来直接访问在内存中的存储的数据结构。它通过一个关键值的函数(被称为散列函数)将所需的数据映射到表中的位置来访问数据。原创 2017-02-20 11:03:57 · 6073 阅读 · 2 评论 -
静态顺序表
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。顺序表分为静态存储的顺序表和动态存储的顺序表。这里先说明静态顺序表的基本操作的实现://SeqList.h#ifndef __SEQLIST_H__#define __SEQLIS原创 2016-06-08 21:23:55 · 547 阅读 · 0 评论 -
动态顺序表
//SeqList.h#ifndef __SEQLIST_H__#define __SEQLIST_H__#include#include#includetypedef int DataType;typedef struct SeqList{ DataType* array; size_t size; DataType capacity; //容量}SeqList,原创 2016-06-08 21:24:03 · 517 阅读 · 0 评论 -
说说堆及堆排序
#pragma once #include#include#includeusing namespace std;templatestruct Less{ bool operator()(const T& left,const T& right) { return (left < right); } };templatestruct Greater{ boo原创 2016-06-10 18:29:41 · 364 阅读 · 0 评论 -
时间复杂度&空间复杂度
我们编过不少代码,起初学习的时候我们习惯性的认为,只要代码能正确的运行就ok啦~很少考虑代码的优化带来的好处。今天说一下影响代码性能的两个重要指标--时间复杂度&空间复杂度。时间复杂度:就是函数(指数学中的函数),具体执行的操作次数。通常用渐进表达式O()来表示。空间复杂度:对象的个数。占用的空间。算法分析一般分为三类:最坏情况、平均情况、最好情况。算法分析要保持大局观,忽略掉常数原创 2016-09-06 14:20:52 · 548 阅读 · 0 评论 -
有趣的链表相关题型
链表:也是线性表的一种。形象的来说:就像火车的一个个车厢一样,一个个的链起来的。它有一个特点:它的头没有前驱,尾没有后继。为什么会引入链表这个概念呢?之前我们知道的顺序表,是用数组的形式保存数据的。它使用起来也非常方便,优点在于它的尾删尾插非常方便,直接将数组空间大小加1,给最后一个数组赋值就ok了。但是对于数组来说,也有一定的缺点。比如:如果在中间插入或删除的话,就得移动一定得位原创 2016-09-16 12:16:14 · 354 阅读 · 0 评论 -
有趣的约瑟夫环问题
大家有没有听过约瑟夫环这个问题呢?我们先来看看它是一个什么样的问题~约瑟夫环(Josephus)问题是由古罗马的史学家约瑟夫(Flavius Josephus)提出的。该问题的说法不一,传说他参加并记录了公元66—70年犹太人反抗罗马的起义。约瑟夫作为一个将军,设法守住了裘达伯特城达47天之久,在城市沦陷之后,他和40名死硬的将士原创 2016-09-16 12:45:09 · 508 阅读 · 0 评论 -
一系列链表题
1、链表的逆置:原创 2016-09-16 13:21:09 · 339 阅读 · 0 评论 -
Stack/Queue与Vector/List的联系
Vector:(顺序表【数组存储】)1.当申请的空间不足的时候,需要再次开辟一块更大的空间,并把值拷过去。2.对于尾删和尾插是比较方便的,只需要改动最后一个元素即可。不会改动原有的空间。适用于多次重复的对尾部插删。3.顺序存储,地址是连续的。4.头插和头删都需要移动一定的大小。时间复杂度为o(N)。而链表只需o(1)。List:(链表)1.需要每次都创建节点。2.适用于原创 2016-11-25 23:48:52 · 1057 阅读 · 0 评论 -
用栈实现后缀表达式求解问题
一、问题概述:人们经常书写的数学表达式属于中缀表达式,今天要解决的是,后缀表达式的求解问题。如下图分别为举例的中缀表达式和后缀表达式:二、解决思路我们用栈存储后缀表达式中的数据部分,当遇到操作符时就取出栈中的栈顶两个元素,检测操作符的类型,并进行相应的计算(这里要注意的是,对于除法运算,栈顶的两个元素的位置得区分)。如下所示:三、实现代码原创 2016-11-29 14:55:47 · 3974 阅读 · 0 评论 -
用栈和递归求解迷宫问题
一、问题概述小时候,我们都玩过走迷宫的游戏吧。看一下这个图例:遇到这种问题时,我们第一反应都会先找到迷宫的入口点,然后对上下左右四个方向进行寻迹, 检测当前位置是否是通路,是否可以通过,直至找到出口位置,才是迷宫的正确轨迹。如若走到死胡 同里,则必须返回重新选择路径走。 我们来模拟一下迷宫问题,我们的迷宫是这样的:哈哈~虽然有点low!但是可以帮助我们解决实原创 2016-11-30 21:27:17 · 10885 阅读 · 0 评论 -
[数据结构]用插入排序和选择排序的思想实现优先级队列
一、问题概述优先级队列的定义: 优先级队列不同于普通的队列,普通的队列具有先进先出的原则,而优先级队列是选择优先级最高的先出队。那么,如何模拟实现优先级队列呢?在这里,我们将较大的值作为优先级较高的。二、解决思路 (1)用插入排序的思想,将它们按由大到小(也可由小到大)排好序,再push到队列中,那么队列中的队首元素便是优先级最高的,取其front,便原创 2016-12-01 20:18:26 · 889 阅读 · 0 评论 -
[数据结构]求解迷宫最短路径问题
一、问题概述 之前,我们了解了如何实现迷宫问题(对于迷宫只有一个出口可以通的情况),事实上我们的迷宫有多个出口,对于每条路径来说,有长有短,所以在这里,我们讨论一下迷宫的最短路径,即迷宫路径的最优解问题。二、解决方案 对于这样一个迷宫: 注:数字为0的表示可以通过,数字为1的表示不可原创 2016-12-08 16:23:59 · 13177 阅读 · 0 评论 -
[WPS笔试题]实现栈的push,pop,max且时间复杂度为O(1)
今天做了一下WPS的笔试题,遇到了一道关于栈的题,觉得挺有意思的,就写篇博客分享一下吧~~原创 2017-04-11 15:09:26 · 2006 阅读 · 3 评论