java学习_05_数组、排序、查找

博客内容仅作学习交流之用,详细内容参见网络资源,欢迎大家交流探讨!


1 数组(Array)

1.1 数组:存放多个同一类型的数据。
定义:① 数据类型 数组名[]=new 数据类型[大小];
②先声明:数据类型 数组名[];  或数据类型[] 数组名1,数组名2...;
即ArrayType ArrayName[]; Or ArrayType[] ArrayName1,ArrayName2...;
  再创建(分配空间):数组名=new 数据类型[大小];
③初始化创建:数据类型 数组名[]={元素值1,...,元素值n};

引用(使用):数组名[下标];

数组只有一个公共实例变量,length。




1.2 各数据类型的默认值
数值型(byte、short、int、float、long、double)=0;
char=
String=null
数组中的元素是对象时,在创建数组时,每个数组元素中的值为null,必须为创建或使用其他方式使元素具有特定的内容(指向具体对象的内存);


1.3 运算符==,变量值的比较;equals(),对象内容比较;


1.4 数组的传递是引用类型的。数组的拷贝可以使用System类中的arraycopy方法:
System.arraycopy(fromArray,fromIndex,toArray,toIndex,length);
拷贝时,需要注意两个数组的空间大小,尤其是toArray数组的。


1.5 多维数组
  二维数组
  定义:类型 数组名[][]=new 类型[大小][大小];
  多维数组实质上都是一维数组,多层的一维数组嵌套,对于每个一维数组都有一个实例变量length。在创建多维数组时可以先给定外层的大小,再逐层给定内层的大小,每层的长度可以不同,即是不规则数组。


1.6 for-each语句
在J2SE 5中引入,为for循环语句的缩略形式,可以简化复杂的for循环语句,主要用在集合(如数组)中,其按照严格的方式,从开始到结束循环:
for(数据类型 变量: 集合)
{
语句块
}


总结
①数组可存放同一类型数据;
②简单的数据类型(int,float...)数组,可直接复制;
③对象数组在定以后,使用时需要再次为每个对象分配空间(new);
④数组大小必须实现指定;
⑤数组名可以理解为执行数组首地址的引用;
⑥数组的下标是从0开始的。


下面是一段关于多维不规则数组和for-each代码的程序:

/*
 * Array and for-each
 * Author:BonJean
 * Date<span style="font-family: Arial, Helvetica, sans-serif;">:20140817</span>
*/

public class AverageTemperatures {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub		
		//Irregular Array
		int temp=0;
		int[][][] arr=new int[3][][];
		for(int x=0;x<arr.length;x++){
			arr[x]=new int[x+1][];
			for(int y=0;y<arr[x].length;y++){
				arr[x][y]=new int[y+1];
				for(int z=0;z<arr[x][y].length;z++){
					arr[x][y][z]=++temp;
					System.out.print(arr[x][y][z]+"  ");
				}
				System.out.println();
			}
			System.out.println();
		}
		
		//test for-each
		int summary=0;
		for(int arr1[][]:arr){
			for(int arr2[]:arr1){
				for(int arr3:arr2){
					summary+=arr3;
				}
			}
		}
		System.out.println("summary is "+summary);
	}
}

运行结果:

1  

2  
3  4  

5  
6  7  
8  9  10  

summary is 55



2 排序(Sorting)
排序是将一群数据,依据指定的顺序进行排列的过程,重要、常用,一般占数据处理25%的时间。
2.1 内部排序,将需要处理的数据都加载到内部储存器中进行排序。
①交换式排序法:对数据位置进行交换
冒泡排序法(Bubble sort)
快速排序法(Quick sort),递归,二分。
②选择式排序法:从欲排序的数据中,按指定的规则选出某一元素,经过和其他元素重整,再依原则交换位置后达到排序的目的。
选择排序法(Selection Sort)
堆排序法(Heap Sort)
③插入式排序法:对于欲排序的元素以插入的方式找寻该元素适当的位置,达到排序的目的,有序集和无序集。
插入排序法(Insertion sort)
谢耳排序法(Shell sort)

二叉树排序法(Binary-tree sort)

2.2 外部排序,数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。

①合并排序法
②直接合并排序法


时间和空间复杂度,寻求最优。



3 查找(Searching)
①顺序查找法
②二分查找(有序数列,递归)



/**
 *站在巨人的肩上才能看得更远,一步一个脚印才能走得更远。分享成长,交流进步,转载请注明出处!
 */
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值