在排序算法中,简单排序主要有三种,分别为冒泡排序、选择排序、插入排序,学习理解好这三种排序算法有助于进一步研究数据结构与算法分析。下面,简单地谈一谈冒泡排序、选择排序、插入排序的原理及区别。冒泡排序原理:1、比较相邻的元素。如果前一个比后一个大,它们就交换。2、每对元素都要进行同样的动作,从后往.....
分类:
其他好文 时间:
2014-07-19 16:32:37
阅读次数:
203
浅谈尾递归 2013-02-10 14:12:57 在《数据结构与算法分析:C描述》(Data Structures and Algorithm Analysis In C)的第三章中,以打印链表为例,提到了尾递归(tail recursion)并指出了尾递归是使用递归极其不当的例子,它指出虽然编译...
分类:
其他好文 时间:
2014-07-18 08:11:35
阅读次数:
162
顺序表的应用示例
--顺序表的并运算与交运算...
分类:
编程语言 时间:
2014-07-17 10:23:35
阅读次数:
251
顺序表的实现与分析引 --线性表的抽象基类:template
class LinearList
{
public:
LinearList();
~LinearList();
virtual int Size() const = 0; //返回线性表所能够存储的最大长度
virtual int Length() const = 0; //当前线性表的长度
...
分类:
编程语言 时间:
2014-07-16 14:37:36
阅读次数:
247
第一章 数据结构与算法的引入1.1 数据结构的基本概念一、学习数据结构的意义 程序设计 = 数据结构 + 算法目前,80%的待处理的数据具有“算法简单”(四则运算、检索、排序等),“对象复杂”(数据类型不同、数据量大、需要保存)等特点,故合理组织数据、选择较好的数据结构可为高效算法(时间少、占用空间...
分类:
其他好文 时间:
2014-07-13 12:30:11
阅读次数:
271
2014.07.08 22:43简介: “搜索”与“剪枝”几乎是如影随形的。此处的“搜索”指的是带有回溯算法的深度优先搜索。 在之前的“Minimax策略”中我们给出了一个三连棋的程序,运行后你就知道计算一步棋要花多少时间。 为了计算最优的一步棋,我们可能需要递归9万多次。如果毫无疑问这种阶乘...
分类:
编程语言 时间:
2014-07-12 13:01:38
阅读次数:
728
2014.07.07 16:46简介: 对于比较小的正整数n,我们习惯用逐个整除的方法检验n是否为质数。这种算法的复杂度是O(n^0.5)。对于int范围内的整数(最大是2147483647),开方以后不到五万,对于单次计算几乎是一瞬间完成,因此可以接受。但如果n是一个大数,比如10^100,这种....
分类:
编程语言 时间:
2014-07-09 00:49:12
阅读次数:
269
2014.07.07 18:19简介: 给定一条数轴上的n个互不重合的点,你可以计算出C(n,2)=n(n-1)/2个距离。如果我给你这些距离值,你能反推出这n个点的坐标吗?描述: 首先,考虑到你可以平移这n个点,并且可以左右反转它们得到对称的两种情况,我们不妨假设最靠左的点p0的坐标正好是0。.....
分类:
编程语言 时间:
2014-07-08 23:39:38
阅读次数:
361
2014.07.07 22:03简介: 跳表(skip list)是一种随机化的有序数据结构。从形状上来看,长得比较像分层索引。能够在接近对数级别的时间内完成增、删、改、查操作。 你姑且可以认为这种数据结构的用途、用法都和平衡树很相似,但内部的实现原理则完全不同。图示: 下面是一条有序的单链表...
分类:
编程语言 时间:
2014-07-08 22:13:36
阅读次数:
365
2014.07.08 00:08简介: 本章里没有讲到这个内容,是我在看书的时候回忆起了自己被问过的一道面试题。当时觉得特别难,现在回想起来才知道是自己无知。 如果有50颗石子,两人轮流拿。每次可以从其中拿走1,2,4或者8颗。谁拿走了最后一颗,谁就输了(输或者赢根本无所谓)。 请问,先手或者...
分类:
编程语言 时间:
2014-07-08 12:42:58
阅读次数:
340