黑马程序员技术交流社区
标题: 数组算法 [打印本页]
作者: xing260577315 时间: 2014-8-31 18:44
标题: 数组算法
关于数组算法
一、引言:
在面向过程的编程语言中,有这样一个公式:程序=数据结构+算法。所以要实现数据的高效存储或查询等,就要掌握数组和一些常用的算法,以提高编程效率;
Ø 一维数组:
l 买一些CD碟片,需要放到一个CD盒中才方便,需要三点;
1)盒子中的每个格子要有存储空间,不然怎么放CD呢?
2)每个格子都要贴上自己的分类名,不然怎么查找呢?
3)每个格子要有自己的标号,不然名字一样怎么办呢?
l 一个数组,就是用来存储一系列变量值的命名区域;要求这一系列变量为同一类型(极特殊情况除外);
Ø 数组的内存分布:示例:int[] arrs = {1,4,67,80};
Ø 如何使用数组:l 方法一:
int[]arrs = {1,47,67,80};
intarrs[] = {1,47,67,80};
l 方法二:
1)声明数组:int[] arrs;
2)分配内存空间:arrs=new int[4];
3)赋值:arrs[0]=1;arrs[1]=4;arrs[2]=67;arrs[3]=80
l 方法三:
int[] arrs = newint[]{1,4,67,80};
Ø 数组的常用算法:
l 平均值和最大最小值:
Avg:for(int i=0,j=a.length;i<j;i++){sum=sum+a}
Max:int max=a[0]; if(a>max){max=a}
l 数组排序
u 利用Arrays类提供是sort()方法升序排列CODE;
Arrays.sort(arrs);
l 数组复制
1)方法一:利用循环复制,代码如下:
/**利用循环复制数组*/
public static void main(String[] args)
{
//原数组为arrs,新数组为arrs2
int[] arrs = new int[]{1,2,3,5,9};
int[] arrs2 = new int[arrs.length];//新数组的长度大于原数组
//循环赋值
for(int i = 0,j=arrs.length;i<j;i++){
arrs2=arrs;//每一个值都对应起来赋值
}
//遍历新数组
for(int a :arrs2){
System.out.println(a);
}
}
2)方法二:利用arraycopy()方法复制,代码如下:
/**利用System提供的类arraycopy来复制数组*/
public static void main(String[] args)
{
//原数组为arrs,新数组为arrs2
int[] arrs = new int[]{1,2,3,5,9};
int[] arrs2 = new int[arrs.length];//新数组的长度大于原数组
//参数对照:原数组,从原数组哪个位置开始复制,新数组,从新数组哪个位置开始粘贴,复制多长;
System.arraycopy(arrs,2, arrs2, 1, arrs.length-2);
//遍历新数组
for(int a :arrs2)
{
System.out.println(a);
}
}
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |