------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); } }
查表法:
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 ; } }
查表法能更高效的解决数制转换问题,可能有一点难于理解。
数组是目前用的最多的数据结构之一,共勉。
原文地址:http://blog.csdn.net/orangeisnotapple/article/details/41379791