数据结构
文章平均质量分 89
sayhello_world
学生
展开
-
数据结构--排序算法(冒泡排序&&快速排序&&鸽巢排序)
冒泡排序:思想:两两交换,大的放到后面。重复size-1次代码实现://冒泡排序void Bubble_Sort(int array[],int size){ for(int idx= 0; idx < size;++idx) { for(int index= 0; index < size-1;++index) {原创 2017-03-18 17:29:15 · 727 阅读 · 0 评论 -
数据结构--七大排序算法总结
面试中,无论是问还是写,排序被问到的次数总是很多。总结一些八大排序算法。排序算法插入,希尔,选择,堆: http://blog.csdn.net/sayhello_world/article/details/61927082冒泡,快速 http://blog.csdn.net/sayhello_world/article/details/63258406归并 http://blog.csdn.原创 2017-08-15 15:53:43 · 718 阅读 · 0 评论 -
数据结构--实现一个位图
什么叫位图?位图,就是用一块内存区域的每一个比特位表示一个对象的数据结构。 叫做 bitmap 或者 bitplane。面试题给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快 速判断一个数是否在这40亿个数中。 【腾讯】我们来分析一下这个问题:40亿个整数想要放到内存中势必需要很大很大的空间,更何况要对40亿个数据进行查找,那时间复杂度将会很大。 基于此,我们用位图的方法的来存原创 2017-08-13 16:09:20 · 481 阅读 · 0 评论 -
数据结构--七大查找算法总结
查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。树表查找和哈希查找会在后续的博文中进行详细介绍。 查找定义:根据给定的某个值,在查找表中确定一个其关键字...转载 2017-08-15 21:06:17 · 58307 阅读 · 12 评论 -
数据结构--排序算法(插入排序&&选择排序)
今天我们来总结一下数据结构中各种排序算法。数据结构排序算法 part1:直接插入排序:思想:当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置将array[i]插入,原来位置上的元素顺序后移。原创 2017-03-13 20:48:49 · 2582 阅读 · 0 评论 -
数据结构--排序算法(冒泡排序&&快速排序&&鸽巢排序)
插入排序以及选择排序请查阅我往期博客:http://blog.csdn.net/sayhello_world/article/details/61927082冒泡排序:思想:两两交换,大的放到后面。重复size-1次代码实现:[cpp] view plain copy//冒泡排序原创 2017-08-01 15:30:56 · 540 阅读 · 0 评论 -
数据结构--图之邻接矩阵&邻接表&图的遍历
图什么是图?图是一种复杂的非线性结构。 在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关;而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。图G由两个集合V(顶点Vertex)和原创 2017-06-09 09:32:42 · 3172 阅读 · 0 评论 -
数据结构--并查集
引:例题小米公司一道面试题: 假如已知有n个人和m对好友关系存于r中。如果两个人是直接或间接的好友,则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。 假如:n = 5,m = 3,r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友圈,共有两个朋友圈。请写原创 2017-06-04 15:38:38 · 338 阅读 · 0 评论 -
数据结构--平衡二叉树的插入详解
平衡二叉树(AVLTree):平衡二叉树具有以下性质:1.它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。2.这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。3.频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多。原创 2017-04-18 19:14:48 · 1808 阅读 · 0 评论 -
数据结构--迭代器实现红黑树
这次总结如何使用自己写的迭代器实现红黑树一.什么是迭代器?迭代器是连接容器和算法的纽带,为数据提供了抽象,使写算法的人不必关心各种数据结构的细节。迭代器提供了数据访问的标准模型——对象序列,使对容器更广泛的访问操作成为可能。泛型编程的关键所在,就是如何找到一种通用的方法,来访问具有不同结构的各种容器中的每个元素,而这正是迭代器的功能。迭代器是一种广义的指针,是指向序列元素指原创 2017-05-18 11:33:09 · 1169 阅读 · 0 评论 -
数据结构--红黑树
数据结构之红黑树 一.什么是红黑树?红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是red或者black,通过对任何一条从根节点到叶子结点上的简单路径来约束,红黑树保证最长路径不超过最短路径的两倍,因而近似平衡。 二.红黑树满足的条件?1. 每个结点不是红色就是黑色2. 根节点是黑色的3. 如果一个根节点是红色的,则它的两个叶子结点是黑原创 2017-05-10 17:06:09 · 706 阅读 · 0 评论 -
数据结构--二叉搜索树
概念:二叉搜索树:又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树1、若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2、若它的右子树不为空,则右子树上所有节点的值都大于根节点的值3、它的左右子树也分别为二叉搜索树如下图: 二叉树基本操作 1. 插入:在二叉查找树中插入新结点,要考虑以下步骤:1.若二叉查找树root为原创 2017-04-15 22:19:09 · 832 阅读 · 0 评论 -
【面试题】二叉树
目录(?)[+]本篇针对面试中常见的二叉树操作作个总结: (1)前序遍历,中序遍历,后序遍历; (2)层次遍历; (3)求树的节点数; (4)求树的叶子数; (5)求树的深度; (6)求二叉树第k层的节点个数; (7)判断两棵二叉树是否结构相同; (8)求二叉树的镜像; (9)求两个节点的最低公共祖先节点;转载 2017-04-14 15:44:37 · 710 阅读 · 0 评论 -
数据结构--排序算法(归并排序&&基数排序&&桶排序)
在前面我们说了快速排序等排序方法,如有同学想看则请查阅往期博:插入排序,选择排序:http://blog.csdn.net/sayhello_world/article/details/61927082冒泡排序,快速排序,鸽巢排序:http://blog.csdn.net/sayhello_world/article/details/63258406今天我们来说归并排序归并原创 2017-03-24 16:52:03 · 1886 阅读 · 0 评论 -
【面试题】从尾到头打印链表&&链表中倒数第K个结点
链表结构体:struct Node{int data;Node* next;}PNode;从尾到头打印链表思路:一般打印时不应该改变链表本身的结构,也就是说第一个遍历到最后一个,最后一个节点第一个输出。后进先出,非递归应该用栈。递归:(缺点:当链表过长时,会导致递归层次太深)//从尾到头打印链表void PrintListReversingly原创 2017-04-07 21:14:16 · 762 阅读 · 0 评论 -
【面试题】大数据计算
大数据存储计算例题: 有一组数字,这组共有10亿个数字,数字位数为1-64位,求出这组数字的平均值。 那么这个数字之和可能是超过的范围的,longlong的范围是(-9223372036854775808~9223372036854775807),很有可能数字已经越界,那么该怎么办? 思路:用字符数组存储越界的数字,在字符数组内进行加减乘除。然后返回字符数组即可原创 2017-04-27 15:32:51 · 1208 阅读 · 0 评论