数组深入学习
来源:互联网 发布:淘宝上的学历是真的吗 编辑:程序博客网 时间:2024/05/16 17:02
数组学习笔记(包括排序和查找算法)
数组(Array):相同类型的数据集合叫数组
如何定义数组: Type[] 变量名称=new Type[数组长度] Java推荐使用这种方式
数组的索引是从0开始的,数组有一个length属性表示数组长度。
int[] a=new int[10],其中a是一个引用,它本身指向了生成数组对象的首地址,对于引用数据类型的数组,它存放的是对象的引用。
二维数组:type[][] a=new Type[2][3] 第一个代表行,第二个代表列
二维数组实际开发中使用比较少
Arrays: 数组工具类 里面比较常用的方法就是排序、搜索、copy、以及asList返回、比较数组是否相等(equals)
Object类: 这三个方法目前可以深入了解了解
*equals()
*hashCode()
*toString()
通常当某个类要覆盖equals()方法的时候,最好把hashCode()方法也覆盖了,其实是为了提升性能。
数组排序:
1.冒泡排序:
/**
* 冒泡排序法:
* 所谓冒泡排序第一个元素和第二个元素,第二个元素和第三个元素比较,较大的元素往后移位
* 第一轮排序:得到最大的元素
* 第二轮排序:得到第二大的元素
* 。。。
* 第n-1轮排序:结束排序
* 二层循环:
int[] a=new int[]{10,9,8,7,6,5,4,3,2,1,0};
for(int i=1;i<a.length;i++){
for(int j=0;j<a.length-i;j++){
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
2.交换排序:
/**
* 交换排序:
* 所谓交换排序:
* 第一轮排序:第一个元素和之后的每一个元素比较,得到最小元素
* 第二轮排序:第二个元素和之后的每一个元素比较,得到第二个最小元素
* 。。。
* 第n-1轮排序:排序完成
* 二层循环
我的代码还有点问题:
二分查找法:
/**
* 二分查找法:
* 使x 和数组的中间元素比较,如果x 大于中间元素,则去掉中间元素和中间元素之前的元素,在剩下的元素中继续上一步骤
* 不过使用二分查找算法有一个前提条件就是,需要查找的数组必须是有序的的,不然没法查找
* 这是一个while循环
public int search(int[] array, int x) {
int min = 0;
int max = array.length - 1;
int middle = 0;
while (max >= min) {
middle = (min + max) / 2;
if (x == array[middle]) {
return middle;
}
if (x > array[middle]) {
min = middle + 1;
}
if (x < array[middle]) {
max = middle - 1;
}
}
return -1;
}
- 数组深入学习
- 数组的深入学习
- PHP数组深入学习
- C语言--数组深入学习
- [c专家编程学习] 深入数组1
- 深入学习C语言知识点checklist--数组
- 【Java学习4.6】深入数组(未完成)
- 深入数组
- 深入数组
- 深入数组
- C语言深入学习--checklist2:数组和结构体
- java学习之深入理解数组(一)
- Java学习记录(5)——深入数组
- js深入学习专题 ------ 类数组的对象和数组对象的区别和联系
- 深入理解java数组
- 数组 深入详解
- 第二十二讲:深入数组
- 数组和指针 深入
- 【索引】Volume 0. Getting Started
- C#泛型与委托:一个简单的数组模板示例
- PHP工作模型与运行机制
- mybatis学习笔记--常见的问题
- scanf含有非输入控制符
- 数组深入学习
- Python批量裁切影像
- linux 忘记root密码的补救
- Java HashMap 分析之一:基本结构
- log4net的各种输出配置
- 子集生成
- simcom工作记录
- 最简单的脚本病毒自我复活思路————【Badboy】
- Spring Security 自定义登录验证与自定义回调地址