- 博客(14)
- 收藏
- 关注
转载 常用算法——排序(三)
希尔排序法 希尔排序又称为缩小增量排序,也属于插入排序类的算法,是对直接插入排序的一种改进。 基本思想就是:将需要排序的序列划分为若干个较小的序列,对这些序列进行直接插入排序,通过这样的操作可使用需要排序的数列基本有序,最后再使用一次直接插入排序。这样,首先对数量较小的序列进行直接插入排序可提高效率,最后对基本有序的序列进行直拦插入排序,也可提高效率,从而使整个排序过程的效率...
2016-03-27 16:26:00
98
转载 常用算法——排序(二)
简单选择排序法 选择排序(Selection Sort)的基本思想:对n个记录进行扫描,选择最小的记录,将其输出,接着在剩下的n-1个记录中扫描,选择最小的记录将其输出,……不断重复这个过程,直到只剩一个记录为止。 程序实现: private static void SelectSort(int[] dataArray) { ...
2016-03-22 11:37:00
120
转载 常用算法——排序(一)
排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题。例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难。同样,存储在计算机中的数据的次序,对于处理这些数据的算法的速度和简便性而言,也具有非常深远的意义。 排序分为:外部排序 and 内部排序 这里我们讨论内部排序 冒泡排序法 冒泡排序法的基本思想是:对待排序记录关键字从后往前(逆...
2016-03-21 23:41:00
117
转载 复杂数据结构(四)图
图的遍历 广度优先遍历类似于树的按层次遍历,具体过程如下: (1)从数组中选择一个未被访问的顶点Vi,将其标记为已访问。 (2)接着依次访问Vi的所有未被访问的邻接点,并标记为已被访问过。 (3)从这些邻接点出发进行广度优先遍历,直至图中所有和Vi有路径相通的顶点都被访问过。 (4)重复步骤(1)至步骤(3)的操作,直至所有顶点都被访问过。...
2016-03-17 15:30:00
143
转载 复杂数据结构(三 )图
图 图是一种复杂的非线性结构。 在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继; 在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关; 而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。 图G由两个集合V(...
2016-03-16 13:13:00
280
转载 复杂数据结构(二)树
线索二叉树 对于n个结点的二叉树,在二叉链存储结构中有n+1个空链域,利用这些空链域存放在某种遍历次序下该结点的前驱结点和后继结点的指针,这些指针称为线索,加上线索的二叉树称为线索二叉树。 例:中序:B F D A C G E H 线索二叉树结构:二叉树的遍历本质上是将一个复杂的非线性结构转换为线性结构,使每个结点都有了唯一前驱和后继(第一个结点无前...
2016-03-15 21:43:00
100
转载 复杂数据结构(一)树
层次关系结构:树 树的概念:树是N个节点的集合 A节点称为根节点,A为B C D的父节点,反之就是子节点,B C D分别为各自的兄弟节点 节点的度:一个节点的子树的数量 称为该节点的度 树的度:一棵树中,最大的节点的度称为树的度 叶节点或终端节点:度为0的节点称为叶节点 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推 树的高度或深度:树中节点的最大...
2016-03-15 11:41:00
195
转载 简单数据结构(五)串和数组
串 在应用程序中使用最频繁的类型是字符串。字符串简称串,是一种特殊的线性表,其特殊性在于串中的数据元素是一个个的字符。字符串在计算机的许多方面应用很广。如在汇编和高级语言的编译程序中,源程序和目标程序都是字符串数据。在事务处理程序中,顾客的信息如姓名、地址等及货物的名称、产地和规格等,都被作为字符串来处理。另外,字符串还具有自身的一些特性。因此,把字符串作为一种数据结构来研究...
2016-03-11 11:56:00
169
转载 简单数据结构(四)栈和队列的简单应用
编程判断一个字符串是否是回文。回文是指一个字符序列以中间字符为基准两边字符完全相同,如字符序列“ ACBDEDBCA”是回文。 算法思想:判断一个字符序列是否是回文,就是把第一个字符与最后一个字符相比较,第二个字符与倒数第二个字符比较,依次类推,第 i 个字符与第 n-i个字符比较。如果每次比较都相等,则为回文,如果某次比较不相等,就不是回文。因此,可以把字符序列分...
2016-03-09 20:32:00
133
转载 简单数据结构(三)栈
后进先出结构:栈 栈(Stack)是操作限定在表的尾端进行的线性表。表尾由于要进行插入、删除等操作,所以,它具有特殊的含义,把表尾称为栈顶( Top),另一端是固定的,叫栈底( Bottom)。当栈中没有数据元素时叫空栈(Empty Stack)。 栈通常记为: S= (a1,a2,…,an),S是英文单词stack的第 1 个字母。a1为栈底元素,an为栈顶元素。这n个...
2016-03-08 15:26:00
152
转载 简单数据结构(二)队列
队列 顺序队列:用一片连续的存储空间来存储队列中的数据元素,这样的队列称为顺序队列(Sequence Queue)。用一维数组来存放顺序队列中的数据元素。队头位置设在数组下标为 0 的端,用 front 表示;队尾位置设在数组的另一端,用 rear 表示。 front 和 rear 随着插入和删除而变化。当队列为空时, front=rear=-1。 图是顺序队列的两个指示器与...
2016-03-07 18:11:00
99
转载 简单数据结构(一)线性表
最简单的结构:线性表 先进先出的结构:队列 先进后出的结构:栈 线性表 线性表数据结构具有以下特征: 有且只有一个“首元素” 有且只有一个“末元素” 除末元素之外,其余元素均有惟一的后继元素 除首元素之外,其余元素均有惟一的前驱元素 对于线性表,主要可进行以下操作: ...
2016-03-06 15:06:00
265
转载 基础算法思想(二)
分治算法 使用分治法设计程序时,一般可按以下步骤进行: (1)分解:将要求解的问题划分成若干规模较小的同类问题 (2)求解:当子问题划分得足够小时,用较简单的方法解决 (3)合并:按求解问题的要求,将子问题的解逐层合并,即可构成最终的解 分治算法实例(乒乓球比赛赛程安排): 我们要给八个人安排赛程 每个人都要对战 并在七天全部比完 我们可...
2016-03-03 18:14:00
94
转载 基础算法思想(一)
递推算法 使用“步步为营”的方法 不断利用已有的信息推导出新的东西 分为 顺推法:从已知的条件出发 逐步推算出要解决问题的方法。例如:斐波拉契数列( 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233...... 这个数列从第2项开始,每一项都等于前两项之和。) 逆推法:从已知的结果出发 用...
2016-03-01 11:41:00
117
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人