|
关于数组算法 一、引言: 在面向过程的编程语言中,有这样一个公式:程序=数据结构+算法。所以要实现数据的高效存储或查询等,就要掌握数组和一些常用的算法,以提高编程效率; Ø 一维数组: 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); } }
|