1 / 42
文档名称:

Java数据结构和算法.docx

格式:docx   大小:370KB   页数:42
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Java数据结构和算法.docx

上传人:260933426 2017/9/28 文件大小:370 KB

下载得到文件列表

Java数据结构和算法.docx

文档介绍

文档介绍:Java数据结构和算法
一、数组于简单排序 1
二、栈与队列 4
三、链表 7
四、递归 22
五、哈希表 25
六、高级排序 25
七、二叉树 25
八、红—黑树 26
九、堆 36
十、带权图 39
一、数组于简单排序
数组
数组(array)是相同类型变量的集合,可以使用共同的名字引用它。数组可被定义为任何类型,可以是一维或多维。数组中的一个特别要素是通过下标来访问它。数组提供了一种将有联系的信息分组的便利方法。
一维数组
一维数组(one-dimensional array )实质上是相同类型变量列表。要创建一个数组,你必须首先定义数组变量所需的类型。通用的一维数组的声明格式是:
type var-name[ ];
获得一个数组需要2步。第一步,你必须定义变量所需的类型。第二步,你必须使用运算符new来为数组所要存储的数据分配内存,并把它们分配给数组变量。这样Java 中的数组被动态地分配。如果动态分配的概念对你陌生,别担心,它将在本书的后面详细讨论。
数组的初始化(array initializer )就是包括在花括号之内用逗号分开的表达式的列表。逗号分开了数组元素的值。Java 会自动地分配一个足够大的空间来保存你指定的初始化元素的个数,而不必使用运算符new。
Java 严格地检查以保证你不会意外地去存储或引用在数组范围以外的值。
Java 的运行系统会检查以确保所有的数组下标都在正确的范围以内(在这方面,Java 与C/C++ 从根本上不同,C/C++ 不提供运行边界检查)。
多维数组
在Java 中,多维数组(multidimensional arrays )实际上是数组的数组。你可能期望,这些数组形式上和行动上和一般的多维数组一样。然而,你将看到,有一些微妙的差别。定义多维数组变量要将每个维数放在它们各自的方括号中。例如,下面语句定义了一个名为twoD 的二维数组变量。
int twoD[][] = new int[4][5];
简单排序
简单排序中包括了:冒泡排序、选择排序、插入排序;
:
假设有N个数据需要排序,则从第0个数开始,依次比较第0和第1个数据,如果第0个大于第1个则两者交换,否则什么动作都不做,继续比较第1个第2个…,这样依次类推,直至所有数据都“冒泡”到数据顶上。
冒泡排序的的java代码:
Public void bubbleSort()
{
int in,out;
for(out=nElems-1;out>0;out--)
for(in=0;in<out;in++)
{
If(a[in]>a[in+1])
Swap(in,in+1);
}
}
算法的不变性:许多算法中,有些条件在算法执行过程中始终是不变的。这些条件被称为算法的不变性,如果不变性不为真了,则标记出错了;
冒泡排序的效率O(N*N),比较N*N/2,交换N*N/4;
2. 选择排序的思想:
假设有N条数据,则暂且标记第0个数据为MIN(最小),使用OUT标记最左边未排序的数据,然后使用IN标记第1个数据,依次与MIN进行比较,如果比MIN小,则将该数据标记为MIN,当第一轮比较完后,最终的MIN与OUT标记数据交换,依次类推;
选择排序的java代码:
Public void selectSort()
{
Int in,out,min;
For(out=0;out<nElems-1;out++)
{
Min=out;
For(in=out+1;in<nElems;in++)
If(a[in]<a[min])
Min=in;
Swap(out,min);
}
}
选择排序的效率:O(N*N),比较N*N/2,交换<N; 选择排序与冒泡排序比较,比较次数没有明显改变,但交换次数明显减少了很多;
3. 插入排序的思想:
插入排序是在部分数据有序的情况下,使用OUT标记第一个无序的数据,将其提取保存到一个中间变量temp中去,使用IN标记空位置,依次比较temp中的值与IN-1的值,如果IN-值大于temp的值,则后移,直到遇到第一个比temp小的值,在其下一个位置插入;
插入排序的java代码:
Public void InsertionSort()
{
Int in,out;
For(out=1;out<nElems;out++)
{
Long temp=a[out]
In=out;
While(in>0&& a[in-1]>temp)
{
A[in]=a[in-1];
- -in;
}
A[in]=temp;
}
}
插入

最近更新

高中一年级历史学习建议书 5页

高一新生历史学习建议书 5页

饲料生产效率提升建议书 5页

餐饮创业新手必读建议书 5页

食堂膳食服务优化建议书 5页

食品安全监督加强建议书 6页

领导采纳的建议书 5页

领导土地流转建议书 5页

预先研究装备提案优化建议书 5页

居家护理员基本技能培训 44页

心理疾病护理团队协作模式 37页

急性呼吸窘迫综合征抢救护理 33页

2024年海南经贸职业技术学院马克思主义基本原.. 12页

急诊护理中的工作压力管理 41页

恐动症患者的饮食与运动护理 43页

2024年渑池县招教考试备考题库带答案解析(夺.. 30页

2024年湄潭县招教考试备考题库带答案解析(必.. 31页

2024年湖北恩施学院马克思主义基本原理概论期.. 12页

2024年湖北黄冈应急管理职业技术学院马克思主.. 13页

慢性胃炎的护理效果评价 69页

2024年滇西科技师范学院马克思主义基本原理概.. 13页

2024年潇湘职业学院马克思主义基本原理概论期.. 13页

2024年烟台大学马克思主义基本原理概论期末考.. 12页

2024年班玛县幼儿园教师招教考试备考题库及答.. 30页

2024年甘肃工业职业技术大学马克思主义基本原.. 13页

2024年疏勒县招教考试备考题库附答案解析(夺.. 31页

2024年益阳教育学院马克思主义基本原理概论期.. 12页

2024年石棉县招教考试备考题库及答案解析(必.. 31页

2024年福建体育职业技术学院马克思主义基本原.. 12页

2024年秦安县幼儿园教师招教考试备考题库附答.. 31页