码迷,mamicode.com
首页 > 编程语言 > 详细

黑马程序员——java基础--数组

时间:2014-11-22 13:23:45      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:黑马程序员   java基础   数组   

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一:数组的定义

1.一维数组

2.二维数组

二:数组的操作

1.数组中常见的排序

2.数组的查找

3.数制转换

------------------------------------------------------------------------------------------------------

1.数组的定义:所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命 名,然后用编号区分他们的变量的集合,可以形象的把数组比作为一个容器,他就像是超市的储物柜,一个大的储物柜中 有很多小的储物柜,储物柜的东西就是数组的元素。

2.如何定义数组:

1.一维数组:int [] a []int a [] [];int [] [] a = new int [3][];二维数组: int [] [] arr = new int [3][5];这个二维数组表示arr中有3个一维数组,说到数组,就要说起java中的内存分配,java中分了5片内存:

1.寄存器

2.本地方法区

3.方法区

4.栈内存

5.堆内存

数组中我们就只说明栈内存和堆内存:

栈:存储的都是局部变量,局部变量包括函数中定义的变量,函数中的参数,语句中的变量。只要数据运算完成所在的区 域结束,该数据就会被释放。

堆:对于数组和对象,1.每一个实体都有内存首地址值 

2.面向对象将以前的过程中的执行者变成了指挥者。

3.增加了垃圾回收机制说起二维数组,就先说一下一维数组,arr是数组类型,数组类型属于引用类型,他其中的元素就是 int型,这个arr包含了3个int型数据。

二维数组:就是包含了多个一维数组。二、数组常见的操作

1.排序

    1.插入排序

2.冒泡排序

public class insertSort{
	public static void main(String args[]){
		int [] a =new int{1,2,6,3,9,5,8,4,7};
		for(int i=0; i<a.length-1; i++)
			for(int j=i+1; j<a.length; j++){
			if(a[i]>a[j]){
			int temp = a[i];
			a[i] = a[j];
			a[j] = temp;
			}
	}
	for(int i=0; i<a.length; i++)
	System.out.println(a[i]);
	}
}	


public class maopaoSort{
	public static void main(String args[]){
		int [] a =new int{1,2,6,3,9,5,8,4,7};
		for(int i=0; i<a.length; i++)
			for(int j=0; j<a.length-i-1; j++){
			if(a[j]>a[j+1]){
			int temp = a[j];
			a[j] = a[j+1];
			a[j+1] = temp;
			}
	}
	for(int i=0; i<a.length; i++)
	System.out.println(a[i]);
	}
}
其实这两种排序方法是很像的,只是在排序的时候比较顺序不一样,这也是面试的时候最常考的两种排序。

2.查找

1.二分查找

public class halfselect{
	public static void main(String args[]){
		int [] a = {1,2,6,9,11,55,63,88};
		int min, max, mid;
		min = 0
		max = aa.length-1;
		mid = (min + max] / 2;
		int select = 11;
		while(a[mid] != select){
			if(a[mid] > select){
				min = mid + 1;
			}
			else if(a[mid] < select){
				max = mid - 1;
			}
			if(max < min)
				return -1;
			mid = (max+min) >> 1;
		}
	System.out.println(a[mid);
	}
}

3.数组的数制转换

查表法:

public class arrayDemo{
	public static void main(String args[]){
	
	}
	public static void Tobin(int n){
		char [] chs =  {'0','1','2','3','4',
				'5','6','7','8',
				'9','A','B','c',
				'D','E','F'};
		char [] char = new int[32];
		int pos = arr.length-1;
		while(num != 0){
			int temp = num & 15;
			arr[pos--] = chs[temp];
			num = num >>> 4;
		}
	for(int i = pos; i <arr.length; i++){
		System.out.print(arr[i]+",");
		}
	}
	public static void trans(int num,int base,int offset)
	{

		if(num==0)
		{
			System.out.println(0);
			return ;
		}
		char[] chs = {'0','1','2','3'
					,'4','5','6','7'
					,'8','9','A','B'
					,'C','D','E','F'};
		char[] arr = new char[32];

		int pos = arr.length;

		while(num!=0)
		{
			int temp = num & base;
			arr[--pos] = chs[temp];
			num = num >>> offset;
		}

		for(int x=pos; x<arr.length; x++)
		{
			System.out.print(arr[x]);
		}

		return ;
	}
}

查表法能更高效的解决数制转换问题,可能有一点难于理解。

数组是目前用的最多的数据结构之一,共勉。

黑马程序员——java基础--数组

标签:黑马程序员   java基础   数组   

原文地址:http://blog.csdn.net/orangeisnotapple/article/details/41379791

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!