A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© xing260577315 中级黑马   /  2014-8-31 18:44  /  770 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马