算法与数据结构
文章平均质量分 76
giveable-coding
这个作者很懒,什么都没留下…
展开
-
C/C++查找一定范围内的素数(筛法)
<br />刚在网上找到了一篇讲述查找一定范围内素数的算法文章,觉得很不错,通俗易懂。<br />本文转自:http://dalu.blogbus.com/logs/37977984.html<br /> 由于一个合数总是可以分解成若干个质数的乘积,那么如果把质数(最初只知道2是质数)的倍数都去掉,那么剩下的就是质数了。<br />例如要查找100以内的质数,首先2是质数,把2的倍数去掉;此时3没有被去掉,可认为是质数,所以把3的倍数去掉;再到5,再到7,7之后呢,因为8,9,10刚才都被去掉了,转载 2011-05-22 16:51:00 · 8261 阅读 · 1 评论 -
数据结构笔记(转载)
第一章 概 论1.数据:信息的载体,能被计算机识别、存储和加工处理。2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。3.数据结构:数据之间的相互关系,即数据的组织形式。它包括:1)数据的逻辑结构,从逻辑关系上描述数据,与数据存储无关,独立于计算机;2)数据的存储结构,是逻辑结构用计算机语言的实现,依赖于计算机语言。3)数据的运算,定义在逻辑结构上,每种逻辑结构都有一个运算集合。常用的运算:检索/插入/删除/更新/排序。4.数据的逻辑结构可以看作是从具体问题抽象出来的转载 2011-05-05 09:12:00 · 755 阅读 · 0 评论 -
详解“十大排序技术”(一):插入排序与归并排序
作者:guiyinzhou时间:二零一零年六月十八日 排序技术一直以来是算法里面的一个核心部分,排序分为内部排序和外部排序,本文主要阐述内部排序十大关键技术。这些排序技术是学习时的重点,也是笔试和面试时常考的知识点,此篇博文是笔者学习时所整理的,由于能力有限,不足和错误之处望指正!话不多说,上算法,本文所给出的排序算法技术内容包括排序算法思想,示意图解析,C++源代码和算法复杂度原创 2011-06-18 11:34:00 · 1884 阅读 · 0 评论 -
数据结构与算法学习之二叉树的遍历:已知先序、中序、后序序列三者中的两种求另外一种遍历的算法
<br />初学数据结构,已经掌握了先序、中序和后序遍历的算法。但是看到有的笔试题有这样一种问题“已知先序、中序、后序序列三者中的两种求另外一种遍历”,挺有意思的,现在来总结一下:<br />三种遍历序列,已知两种,求第三种,我们下面分类讨论一下:<br />1)已知先序和中序,求后序<br />我们来举个简单的例子,先序序列为:ABDECF,中序序列为:DBEAFC。<br />算法思想:先序遍历树的规则为中左右,可以看到先序遍历序列的第一个元素必为树的根节点,比如上例中的A就为根节点。再看中序遍历为:左原创 2011-04-24 20:48:00 · 5862 阅读 · 0 评论 -
数据结构与算法学习之栈及栈的相关操作
<br />栈是一种将插入和删除操作限制在一端的表,有时也成为LIFO表;栈的操作核心是使用一个栈顶指针top指向栈顶元素。<br />栈中有两个总要的操作就是Push和pop,进栈和出栈操作。<br />栈也可以使用两种方式建立,数组方法和链表方法。当然数组实现是连续存储的,但是使用起来需要预先估计数组的大小。链表实现是非连续<br />存储的,使用相对灵活。 <br />下面是本人在学习的时候将栈以数组和链表两种方法进行实现的代码。<br />链表实现code:<br />/**************原创 2011-04-23 10:42:00 · 589 阅读 · 0 评论 -
数据结构与算法学习之二叉排序树及二叉排序树的相关操作
<br />二叉排序树是数表动态查找中的一种重要应用。<br />二叉排序树具备以下特点:<br />1)若它的左子树不为空,则左子树上的各结点的值均小于它的根结点的值;2)若它的右子树不为空,则其右子树上的各结点的值均大于等于它的根节点的值;3)它的左子树和右子树分别又是一个二叉排序树。<br />二叉排序树中的一些操作应该掌握,如如何建立一个二叉排序树,它的插入和删除操作,以及查找某个元素值的操作。下面是本人在学习时联系写的一些代码:<br />#include <iostream>using na原创 2011-04-24 15:31:00 · 920 阅读 · 0 评论 -
数据结构与算法学习之二叉树及二叉树的相关操作
二叉树的各种遍历,递归、非递归实现,二叉树的建立。二叉树节点,叶子节点个数的统计,深度计算原创 2011-04-23 14:42:00 · 1103 阅读 · 0 评论 -
数据结构与算法学习之查找技术
<br />查找是对数据、文件处理时常使用的一种操作。查找算法主要分为两类,静态查找和动态查找。<br />静态查找是指查找过程中标的结构始终不会发生变化,而动态查找表会发生变化,通常伴随着插入和删除操作。一般衡量查找算法的优越性主要看平均查找长度和最大查找长度。<br />一、静态查找表<br />1.顺序查找<br />算法思想:从表的一端开始顺序扫描线性表,依次将扫描到的结点关键字与给定值K比较,若当前扫描到的结点关键字与k相等则查找成功;若扫描结束后,仍未找到关键字等于K的结点,则查找失败。<br原创 2011-04-25 14:57:00 · 1684 阅读 · 0 评论 -
数据结构与算法学习之队列及队列的相关操作
队列也是一张表,它是一种插入操作在一端删除操作在另一端进行的表。队列的操作主要要抓住两个核心位置队头front和队尾rear。队列的主要操作就是入队与出队了。同样,队列也可以使用数组和链表两种方式实现。下面是本人在学习队列操作时利用链表方式实现的代码:/***************************************************************************//*********************队列的非顺序存储结构实现(链表实现)***********原创 2011-04-23 13:00:00 · 610 阅读 · 0 评论 -
数据结构与算法学习之链表
<br />抽象数据类型ADT中的表可以用简单的数组实现。但是用数组实现有两个弊端:<br />1)首先要对表的大小的最大值进行估计,以便于创建相应长度的数组,如果过大,会浪费很多空间。<br />2)插入和删除操作在数组中的代价是昂贵的。因为插入一个元素或者删除一个元素会使得其他元素的位置需要相应的变化。<br />为了克服上面的困难,我们需要使得表的存储不连续,避免整体或者大规模的数据移动。链表的思想由此而生:<br />链表是由一系列不必在内存中相连的结构组成。每个结构包含一个表元素和一个指向后继结构原创 2011-04-20 10:15:00 · 488 阅读 · 0 评论 -
常见的C字符串处理函数的源代码
<br />以下是一些常见的C字符串处理函数的源代码,当然也是从网上找来的,学习它一个好处是加深理解C,另一个好外是应聘面试中的笔试常常会用到它们,呵呵。<br />char *strcpy(char *strDes, const char *strSrc)<br />{<br /> assert((strDes != NULL) && (strSrc != NULL));<br /> char *address = strDes;<br /> while ((*strDes ++ = *转载 2011-05-04 15:28:00 · 704 阅读 · 0 评论