zjw_python的博客

人生苦短,我用Python

排序:
默认
按更新时间
按访问量

二分查找、插值查找、斐波那契查找

1 概念 在有序表中,取中间记录作为比较对象,将其与给定值相比较,若其等于给定值,则查找成功;若其小于给定值,则在中间记录的右半区继续查找;若其大于给定值,则在中间记录的左半区继续查找。不断重复以上过程,直到查找成功或无匹配记录。 使用该查找方法的前提条件在于,线性表中的数据必须有序,且必须采...

2018-08-15 19:59:13

阅读数:5

评论数:0

郝夫曼(Huffman)树及其应用

1. 基本概念 路径长度:树中一个结点到另一个结点路径上的分支数目。 树的路径长度:从树根到每一结点的路径长度之和。 带权路径长度:结点到树根之间的路径长度与结点上权的乘积。 树的带权路径长度(WPL):树中所有叶子结点的带权路径长度之和。 郝夫曼树(最优二叉树):对于一棵有n个叶子结点...

2018-08-13 20:30:22

阅读数:5

评论数:0

快速排序

学习之后,自己练习手写一下排序算法,加深印象 原理:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 #define MAXSIZE 10 #include <s...

2018-03-31 16:53:54

阅读数:59

评论数:0

归并排序(递归和非递归)

学习之后,自己练习手写一下排序算法,加深印象 原理:假设初始序列含有n个记录,则可以看做是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的子序列;再两两归并,如此重复,最终得到一个长度为n的有序序列 递归方法 #define MAXSIZE 10 #inclu...

2018-03-28 20:24:01

阅读数:43

评论数:0

堆排序

学习之后,自己练习手写一下排序算法,加深印象 原理:将待排序n个元素的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根结点。将它与堆末尾的元素交换后,移除。然后将剩下n-1个元素的序列重新构造成一个堆,这样就会得到这n-1个元素中最大值。如此反复交换根结点和构建新的堆,便能得到一个有序序...

2018-03-24 09:59:02

阅读数:31

评论数:1

希尔排序

学习之后,自己练习手写一下排序算法,加深印象 原理:将相距某个“增量”的记录组成一个子序列,在各个子序列内分别进行直接插入排序后得到基本有序的结果。所谓基本有序,就是小的关键字在前面,大的基本在后面,不大不小的基本在中间,比如{2,1,3,6,4,7,5,8,9}就可以称为基本有序 #de...

2018-03-21 11:11:10

阅读数:26

评论数:0

直接插入排序

学习之后,自己练习手写一下排序算法,加深印象 原理:将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录增1的有序表。在插入过程中,需要与有序表中的数依次比较大小,从而找到新记录的插入位置。 #define MAXSIZE 10 #include <stdio.h...

2018-03-18 14:41:04

阅读数:24

评论数:0

简单选择排序

学习之后,自己练习手写一下排序算法,加深印象 原理:通过n-i次关键词的比较,从n-i+1个记录中选出关键词最小的记录,并和第i(1<=i<=n)个记录交换之。与冒泡排序相比,其交换的次数减少了许多。 #define MAXSIZE 10 #in...

2018-03-17 13:20:21

阅读数:28

评论数:0

冒泡排序

学习之后,自己练习手写一下排序算法,加深印象 原理:顾名思义,此种算法排序的数字像气泡一样,一个个往上浮。两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止 #define MAXSIZE 10 #include <stdio.h>...

2018-03-16 21:39:53

阅读数:24

评论数:0

树、森林与二叉树的转换及遍历

1.树、森林与二叉树的转换前面介绍的孩子兄弟存储结构可以将树转换为二叉树。这样我们就可以使用二叉树的算法来解决普通树的问题。1.树转换为二叉树将树转换为二叉树的步骤如下: 1. 加线。在所有相邻的兄弟结点之间加一条线。 2. 去线。对树中的每个结点。只保留它与第一个孩子结点的连线,删除它与其他...

2017-06-20 15:59:53

阅读数:637

评论数:0

线索二叉树

1.基本概念对于某些二叉树而言,其指针域的空间不能被充分利用。因此我们可以考虑利用那些空的指针域来存放指向结点在某种遍历次序下的前驱和后继结点的地址。我们把这种指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,对应的二叉树就称为线索二叉树。 我们对二叉树以某种次序遍历使其变为线索二叉...

2017-06-08 20:07:38

阅读数:294

评论数:2

二叉树及其遍历(递归和非递归实现)

1.基本概念二叉树:一种特殊的树形结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。二叉树的五种形态:空二叉树、只有一个根结点、根节点只有左子树、根节点只有右子树、根节点既有左子树又有右子树。特殊二叉树: 斜树(所有结点只...

2017-05-30 09:19:17

阅读数:410

评论数:0

1.基本概念 树:是n(n>=0)个结点的有限集。在任意一颗非空树种:(1)有且仅有一个特定的称为根的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2....Tn,其中每一个集合本身又是一棵树,并且称为根的子树。 度:结点拥有的子树数

2017-05-25 12:28:03

阅读数:167

评论数:0

KMP算法

1.原始的字符串匹配方法 算法基本思想:从主串S的第pos个字符起和模式的第一个字符比较之,若相等,则继续逐个比较后续字符;否则从主串的下一个字符起再重新和模式的字符比较之。依次类推,直至模式T中的每个字符依次和主串S中的一个连续的字符序列相等,则称匹配成功,否则称匹配不成功。 这种匹配方法理解起...

2017-05-20 08:32:40

阅读数:325

评论数:0

1.基本概念 由零个或多个字符组成的有限序列。 2.抽象数据类型(ADT) 数据对象:串的数据对象约束为字符集 基本操作:

2017-05-13 08:34:39

阅读数:146

评论数:0

1051. Pop Sequence

Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and pop randomly. You are supposed to tell if a given ...

2017-05-12 16:23:23

阅读数:135

评论数:0

一元多项式的乘法与加法运算

设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。...

2017-05-09 13:45:07

阅读数:287

评论数:0

队列

1 基本概念 队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。

2017-05-05 21:22:53

阅读数:147

评论数:0

1 基本概念 栈是限定仅在表尾进行插入或删除操作的线性表。表头称为栈底,表尾称为栈顶,不含元素的空栈叫做空栈。栈具有后进先出的特点。 2 抽象数据类型 数据对象

2017-05-03 16:43:45

阅读数:163

评论数:0

线性表

1.基本概念 n个数据元素的有限序列 2 抽象数据类型(ADT) 数据对象:{a1,a2,.....,an},每个元素类型为DataType。 数据关系:除第一个元素外,每一个元素有且只有一个直接前驱元素;除最后一个元素外,每个元素有且只有一个直接后驱。一对一的对应关系。 基本操作:       ...

2017-05-01 16:39:52

阅读数:209

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭