黑马日记第二篇——数组

----------------------  android培训 、 java培训 、 期待与您交流!---------------------- 


一、数组的格式:

格式1:元素类型 [] 数组名 = new 元素类型[元素个数或数组的长度]
格式2:元素类型 [] 数组名 = new 元素类型{元素,元素,元素,……}     可简写为:元素类型 [] 数组名 = {元素,元素,元素,……}

二、数组的操作:

1,遍历数组:
一般形式:
for (int i=0,i<arr.length,i++)
{
    具体操作动作如: System.out.println(arr[i]);
}

2,获取最值
一般形式:
int min,max;
min=max=arr[0];
for (int i=0;i<arr.length;i++)
{
    if (arr[i]<min)
        int temp=arr[i];
        arr[i]=min;
        min=temp;
}
for (int i=0;i<arr.length;i++)
{
    if (arr[i]>max)
        int temp=arr[i];
        arr[i]=max;
        max=temp;
}
上述方法也可以采用定义下标形式。

3,数组排序:

选择排序:
思路:选择排序思想是将数组中从第一个元素开始依次比较第二个元素,再比较第三个元素,一直到最后一个元素,再用第二个元素比较第三个元素到最后,以此类推。采用嵌套循环的方式来控制角标进行比较,其中要注意的是选择排序用于比较的元素不需要取到最后一个。另外,选择排序第一轮内循环比较后的最值出现在最前面,也就是第一个元素。
一般形式:(从小到大)
for (int i=0;i<arr.length-1;i++)
{
    for (int j=i+1;j<arr.length;j++)
    {
        if (arr[i]>arr[j])
        int temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }
}

冒泡排序:
思路:冒泡排序思想是相邻的两个元素作比较,如第一个元素与第二个元素比较,再将第二个元素与第三个元素作比较,直到最后一个。然后再重新从第一个开始作比较,到倒数第二个元素为止。其中要注意的是用于比较的元素不能取到最后一个元素,另外冒泡排序第一轮内循环比较后的最值出现在最后面,也就是数组的最后一个元素。
一般形式:(从小到大)
for (int i=0;i<arr.length-1;i++)
{
    for (int j=0;j<arr.length-1-i;j++)
    {
        if(arr[j]>arr[j+1])
        int temp=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=temp;
    }
}
注意:1、对于数组的排序问题,效率最高,速度最快的排序方式为希尔排序。
         2、在java中提供了数组排序包Array.sort,其中包括了多种对于排序问题的操作,在实际应用中可以直接调用。

4、数组中查找某一元素

整体查找:
利用循环语句遍历数组,找到key后提取。
一般形式:
for (int i=0;i<arr.length;i++)
{
    if(a[i]==key)
        return i;
}
return -1;//此处返回-1表示没有找到该key,规范写法。

折半查找;
折半查找的必要条件是必须在有序的数组中查找,通过调整数组中间的元素来缩小查找范围。
一般形式:(控制下标)
int min=0,max=arr.length-1,min;
while (min<=max)
{
    mid=(min+max)>>1;
    if(key>mid)
        min=mid+1;//中间值的下一个元素。
    else if (key<mid)
        max=mid-1;//中间值的前一个元素。
    else
        return mid;
}
return -1;//表示没有找到。

5、查表法进制转换
十进制转其他进制:
public static void trans(int num,int base,int offset)  //num表示要转换的数;base是需要转成的进制再前去1;offset是右移的位数(如转16进制就右移4位)。
char[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
while(num!=0)
{
int temp=num&base;
num>>>offset;
}

6、二维数组的全累加
二维数组定义:int[][] arr={};
累加思想:将二维数组遍历,用嵌套循环方式控制数组下标。
一般形式:
int sum=0;
for (int i=0;i<arr.length;i++)
{
    for (int j=0;j<arr[i].length;j++)
    {
        sum+=arr[i][j];
    }
}

注:在学习数组过程中,接触到了java的StringBuffer类,可以存储字符并实现字符的反向打印动作。
以上为数组学习的整理笔记。


----------------------  android培训 、 java培训 、期待与您交流! ---------------------- 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值