![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构经典算法
quentain
简单做人,勤奋做事!
展开
-
算法之排序算法
概述 排序算法是计算机技术中最基本的算法,许多复杂算法都会用到排序。尽管各种排序算法都已被封装成库函数供程序员使用,但了解排序算法的思想和原理,对于编写高质量的软件,显得非常重要。 本文介绍了常见的排序算法,从算法思想,复杂度和使用场景等方面做了总结。 2. 几个概念 (1)排序稳定:如果两个数相同,对他们进行的排序结果为他们的相对顺序不变。例如A={1,2,1,2,1}这转载 2015-11-26 10:03:47 · 362 阅读 · 0 评论 -
给出二叉树的先序和中序,求二叉树的后续遍历
解析: 首先分析:给出先序遍历的二叉树的结果,我们知道先序是:根 左 右;中序是:左 根 右; 那么我们很容易就知道在先序遍历中可以确定二叉树的根所在的位置,其次再在中序遍历中找出根的左边和右边,这样不断的递归就会将原来的二叉树构建 出来,之后再进行后续遍历:左 右 根; 伪代码如下: /* 思想:根据二叉树的先序序列和中序序列恢复二叉树的递归思想是:先根据先序序列的第一个结点建立根结原创 2015-12-31 09:58:32 · 1651 阅读 · 0 评论 -
10大基础实用算法及其图解(程序员必备)
提到算法,大家一定非常熟悉了,但也许你只是擅长某一两种。下面小编为大家介绍一下10种比较好的算法,可能不完善,欢迎大家评论补充!谢谢! 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更转载 2016-01-21 19:53:30 · 840 阅读 · 0 评论 -
用两个栈实现队列的过程
(1)题目:用两个栈实现一个队列。 队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和队列头部删除结点的功能。 template class CQueue { public: CQueue(void); ~CQueue(void); void appendTail(const T& node);原创 2015-12-21 11:16:40 · 513 阅读 · 0 评论 -
两个栈实现队列 两个队列实现栈
看到一篇很好的博文,转载:http://www.cnblogs.com/kaituorensheng/archive/2013/03/02/2939690.html 分享下面的内容: 为说明思想,假设队列、栈都很大,不会出现满的情况。 1. 两个栈实现队列 //前提已知: struct Stack { int top; //栈顶指针 int st转载 2015-12-21 11:25:43 · 457 阅读 · 0 评论 -
处理散列冲突的方法
1. 开放定址法 开放定址法就是一旦发生冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入。 Hi = (H(key) + di) MOD m, i=1,2,…, k(ki为增量序列。di可有下列三种取法: (1)di=1,2,3,…, m-1,称为线性探测再散列; (2)di=1^2, -(1^2), 2^2, -(2^2)转载 2016-03-03 08:59:29 · 1066 阅读 · 0 评论 -
面试中的排序算法总结
前言 查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。面试官对于这转载 2016-05-06 11:36:42 · 432 阅读 · 2 评论