-
伙伴系统管控动态内存
所属栏目:[语言] 日期:2022-07-11 热度:69
前面介绍了系统在分配与回收存储空间时采取的边界标识法。本节再介绍一种管理存储空间的方法伙伴系统。 伙伴系统本身是一种动态管理内存的方法,和边界标识法的区别是:使用伙伴系统管理的存储空间,无论是空闲块还是占用块,大小都是 2 的 n 次幂(n 为正整[详细]
-
无用单元采集 垃圾回收机制
所属栏目:[语言] 日期:2022-07-11 热度:149
通过前几节对可利用空间表进行动态存储管理的介绍,运行机制可以概括为:当用户发出申请空间的请求后,系统向用户分配内存;用户运行结束释放存储空间后,系统回收内存。这两部操作都是在用户给出明确的指令后,系统对存储空间进行有效地分配和回收。 但是在[详细]
-
内存紧缩 内存碎片化处置
所属栏目:[语言] 日期:2022-07-11 热度:58
前边介绍的有关动态内存管理的方法,无论是边界标识法还是伙伴系统,但是以将空闲的存储空间链接成一个链表,即可利用空间表,对存储空间进行分配和回收。 本节介绍另外一种动态内存管理的方法,使用这种方式在整个内存管理过程中,不管哪个时间段,所有未被[详细]
-
何为查找表
所属栏目:[语言] 日期:2022-07-11 热度:96
在日常生活中,几乎每天都要进行一些查找的工作,在电话簿中查阅某个人的电话号码;在电脑的文件夹中查找某个具体的文件等等。本节主要介绍用于查找操作的数据结构查找表。 查找表是由同一类型的数据元素构成的集合。例如电话号码簿和字典都可以看作是一张查[详细]
-
顺序查找算法解说 包含C语言实现代码
所属栏目:[语言] 日期:2022-07-11 热度:62
通过前面对静态查找表的介绍,静态查找表即为只做查找操作的查找表。 静态查找表既可以使用顺序表表示,也可以使用链表结构表示。虽然一个是数组、一个链表,但两者在做查找操作时,基本上大同小异。 本节以静态查找表的顺序存储结构为例做详细的介绍。 顺序[详细]
-
二分查找 折半寻找 算法详解 C语言实现
所属栏目:[语言] 日期:2022-07-11 热度:147
折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的。 例如,在{5,21,13,19,37,75,56,64,88 ,80,92}这个查找表使用折半查找算法查找数据之前,需要首先对该表中的数[详细]
-
二叉排序树 二叉查找树 及C语言达成
所属栏目:[语言] 日期:2022-07-11 热度:134
前几节介绍的都是有关静态查找表的相关知识,从本节开始介绍另外一种查找表动态查找表。 动态查找表中做查找操作时,若查找成功可以对其进行删除;如果查找失败,即表中无该关键字,可以将该关键字插入到表中。 动态查找表的表示方式有多种,本节介绍一种使[详细]
-
平衡二叉树 AVL树 与C语言实现
所属栏目:[语言] 日期:2022-07-10 热度:106
上一节介绍如何使用二叉排序树实现动态查找表,本节介绍另外一种实现方式平衡二叉树。 平衡二叉树,又称为 AVL 树。实际上就是遵循以下两个特点的二叉树: 每棵子树中的左子树和右子树的深度差不能超过 1; 二叉树中每棵子树都要求是平衡二叉树; 其实就是在[详细]
-
哈希表 散列表 详解 包含哈希表处理冲突的方式
所属栏目:[语言] 日期:2022-07-10 热度:176
前面介绍了静态查找表以及动态查找表中的一些查找方法,其查找的过程都无法避免同查找表中的数据进行比较,查找算法的效率很大程度取决于同表中数据的查找次数。 而本节所介绍的哈希表可以通过关键字直接找到数据的存储位置,不需要进行任何的比较,其查找的[详细]
-
插入排序算法及C语言做成
所属栏目:[语言] 日期:2022-07-10 热度:120
插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。 直接插入排序是插入排序算法中的一种,采用的方法是:在添加新的记录时,使用顺序查找的方式找到[详细]
-
折半插入排序算法 C语言代码达成
所属栏目:[语言] 日期:2022-07-10 热度:191
上一节介绍了直接插入排序算法的理论实现和具体的代码实现,如果你善于思考就会发现该算法在查找插入位置时,采用的是顺序查找的方式,而在查找表中数据本身有序的前提下,可以使用折半查找来代替顺序查找,这种排序的算法就是折半插入排序算法。 该算法的具[详细]
-
2路插入排序算法说明
所属栏目:[语言] 日期:2022-07-10 热度:96
2-路插入排序算法是在折半插入排序的基础上对其进行改进,减少其在排序过程中移动记录的次数从而提高效率。 具体实现思路为:另外设置一个同存储记录的数组大小相同的数组 d,将无序表中第一个记录添加进 d[0] 的位置上,然后从无序表中第二个记录开始,同 d[详细]
-
表插入排行算法
所属栏目:[语言] 日期:2022-07-10 热度:89
前面章节中所介绍到的三种插入排序算法,其基本结构都采用数组的形式进行存储,因而无法避免排序过程中产生的数据移动的问题。如果想要从根本上解决只能改变数据的存储结构,改用链表存储。 表插入排序,即使用链表的存储结构对数据进行插入排序。在对记录按[详细]
-
冒泡排序 起泡排序 算法与其C语言实现
所属栏目:[语言] 日期:2022-07-10 热度:145
起泡排序,别名冒泡排序,该算法的核心思想是将无序表中的所有记录,通过两两比较关键字,得出升序序列或者降序序列。 对无序表的第一次起泡排序,最终将无序表中的最大值 97 找到并存储在表的最后一个位置。具体实现过程为: 首先 49 和 38 比较,由于 3849[详细]
-
简单选择排序算法 C语言解析版
所属栏目:[语言] 日期:2022-07-10 热度:138
该算法的实现思想为:对于具有 n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上。 例如对无序表{56,12,80,91,20}采用简单选择排序算法进行排序,具体过程为: 第一次遍历时,从下[详细]
-
堆排序算法C语言细说
所属栏目:[语言] 日期:2022-07-10 热度:121
在学习堆排序之前,首先需要了解堆的含义:在含有 n 个元素的序列中,如果序列中的元素满足下面其中一种关系时,此序列可以称之为堆。 ki k2i 且 ki k2i+1(在 n 个记录的范围内,第 i 个关键字的值小于第 2*i 个关键字,同时也小于第 2*i+1 个关键字) ki k[详细]
-
何为外部排序算法
所属栏目:[语言] 日期:2022-07-10 热度:77
上一章介绍了很多排序算法,插入排序、选择排序、归并排序等等,这些算法都属于内部排序算法,即排序的整个过程只是在内存中完成。而当待排序的文件比内存的可使用容量还大时,文件无法一次性放到内存中进行排序,需要借助于外部存储器(例如硬盘、U盘、光盘[详细]
-
Java static关键字 静态变量和静态方式
所属栏目:[语言] 日期:2022-07-09 热度:106
在类中,使用 static 修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有。 静态成员不依赖于类的特定实例,被类的所有实例共享,就是说 static 修饰的方法或者变[详细]
-
Java import static静态输入
所属栏目:[语言] 日期:2022-07-09 热度:65
在 JDK 1.5 之后增加了一种静态导入的语法,用于导入指定类的某个静态成员变量、方法或全部的静态成员变量、方法。如果一个类中的方法全部是使用 static 声明的静态方法,则在导入时就可以直接使用 import static 的方式导入。 静态导入使用 import static[详细]
-
Java final修饰符说明
所属栏目:[语言] 日期:2022-07-09 热度:188
final 在 Java 中的意思是最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。final 应用于类、方法和变量时意义是不同的,但本质是一样的,都表示不可改变,类似 C# 里的 sealed 关键字。 使用 final 关键字声明类、变量和方法需要注意以下几[详细]
-
Java main 办法
所属栏目:[语言] 日期:2022-07-09 热度:71
在 Java 中,main() 方法是 Java 应用程序的入口方法,程序在运行的时候,第一个执行的方法就是 main() 方法。main() 方法和其他的方法有很大的不同。 下面先来看最简单的一个 Java 应用程序 HelloWorld,我们将通过这个例子讲解 Java 类中 main() 方法的奥[详细]
-
Java办法的可变参数
所属栏目:[语言] 日期:2022-07-09 热度:52
在具体实际开发过程中,有时方法中参数的个数是不确定的。为了解决这个问题,在 J2SE 5.0 版本中引入了可变参数的概念。 声明可变参数的语法格式如下: methodName({paramList},paramTypeparamName) 其中,methodName 表示方法名称;paramList 表示方法的固[详细]
-
Java创造方法
所属栏目:[语言] 日期:2022-07-09 热度:102
构造方法是类的一种特殊方法,用来初始化类的一个新的对象,在创建对象(new 运算符)之后自动调用。Java 中的每个类都有一个默认的构造方法,并且可以有一个以上的构造方法。 Java 构造方法有以下特点: 方法名必须与类名相同 可以有 0 个、1 个或多个参数[详细]
-
Java查找个人信息
所属栏目:[语言] 日期:2022-07-09 热度:64
每个员工都会有自己的档案,主管可以查看在职员工的档案。使用 Java 创建一个员工实体类,然后通过构造方法创建一个名为王洁的员工,最后打印出员工档案信息。示例步骤如下。 (1) 创建 Person 类,在该类中定义个人基本信息属性,并定义一个带有参数的构造方[详细]
-
Java析构方案
所属栏目:[语言] 日期:2022-07-09 热度:175
析构方法与构造方法相反,当对象脱离其作用域时(例如对象所在的方法已调用完毕),系统自动执行析构方法。析构方法往往用来做清理垃圾碎片的工作,例如在建立对象时用 new 开辟了一片内存空间,应退出前在析构方法中将其释放。 在 Java 的 Object 类中还提[详细]
