数据结构从入门到精通(第六篇) :堆的应用和深度解析(解决Top-K问题)
什么是Top-K问题TOP-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。在生活中的运用如果只是数据比较少的,我们可以排序找到前几的数据,但是实际应用中我们时常都会面对海量的数据,大到内存无法全部加载,这就需要我们用数据结构中的堆来解决基本思路用数据集合中前K个元素来建堆前k个最大的元素,则建....
数据结构从入门到精通(第六篇) :堆的实现
堆的概念如果有一个关键码的集合K = { , , ,…, },把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足: <= 且 <= ( >= 且 >= ) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。性质:堆中某个节点的值总是不大于或不小于其父节点的值堆总是一棵完全二叉树堆的实现(大堆....
数据结构从入门到精通(第五篇) :排序的进阶(快速排序,归并排序,计数排序)
前言在上一篇,我们已经讲了基本的排序方法,例如:插入排序,希尔排序,选择排序,冒泡排序数据结构从入门到精通(第四篇) :排序的入门(插入排序,希尔排序,选择排序,冒泡排序)这一篇将会讲解进阶的排序算法,例如:快速排序,归并排序,计数排序快速排序原理任取待排序元素序列中的某元素作为基准值,按照该基准值将待排序列分为两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后左右序....
数据结构从入门到精通(第四篇) :排序的入门(插入排序,希尔排序,选择排序,冒泡排序)
排序的概念及其运用排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。 内部排序:数据元素....
数据结构从入门到精通(第三篇) :二叉数的基本解析
树概念及结构树是一种 非线性 的数据结构,它是由 n ( n>=0 )个有限结点组成一个具有层次关系的集合把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的注意:有一个特殊的结点,称为根结点,根节点没有前驱结点除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i <=m)又是一棵结构与树类似的子....
数据结构入门:带头双向循环链表(从入门到精通)
带头双向循环链表与单链表的区别单向/双向单向:只有一个next指针,只指向下一位元素双向:有两个指针,指向上一位和下一位元素,寻找前一节点和后一节点很便利带头/不带头带头:在本来的头结点之前还有一个哨兵卫节点作为头节点,它的址域指针指向头节点,值域不做使用不带头:没有哨兵卫头节点,在尾删尾插等问题中要考虑头结点的情况(局限)循环/非循环循环:头结点会与尾节点相连非循环:头结点不与尾节点相连代码的....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
算法编程
开发者社区在线编程频道官方技术圈。包含算法资源更新,周赛动态,每日一题互动。
+关注