java的数组

gassion永刚、期待与您交流! ----------

学习了数组的定义,排序,和数组在内存存储情况。
一.首先数组时引用类型的,定义数组  (有三种方法定义数组)
1.动态的定义一个数组这样定义数组的默认初始化值是0
int [] number= new int[3];
静态的定义一个数组,定义并且初始化了数组的值
2.int [] number={1,2,5,3,4,0};
3.int [] number=new int[]{1,2,5,3,4,0};(绝对不能写数组的长度,其效果和2相同)
二。从数组中读取数值只需要数组名[数组角标]即可,需注意的是数组的角标是从0开始的
例如 number[0] 的值是 1 ; number[2]的值是5
三,数组的排序
简单排序:简单排序就是就是从左到右逐个的进行比较。例如下图

我们一开始可以拿第一个数组角标的值然后逐一的和后面的值进行比较。
选择排序的特点是:
1.每一轮排序都会得到一个最大值或者最小值。
2.排序的效率太低
   public void selectSort(int [] arr)
     {
     for(int x=0;x<arr.length-1;x++)
      {
                for(int y=x+1;y<arr.length;y++)
            {
                 if(arr[x]>arr[y])
                  { 
                          int temp=arr[x];
                           arr[x]=arr[y];
                          arr[y]=temp;
                  }
            }

         }
     }
2.冒泡排序:
代码:


其中内层循环中 y=arr.length-x-1 其中-x 是让每一次比较元素减少1个;-1防止角标越界。
四:数组的查找
1.逐个查找
利用循环逐一查找数组存在的返回数组的角标,不存在的返回-1.
 public int getIndex(int[] arr, int key)
{
    for(int x=0;x<arr.length;x++)
    {
            if(arr[x]==key)
             {
               return x
              }
         return -1;
    }
}
2.折半查找(二分法查找)
这般查找效率高,但是数组必须是有序的。

public int getIndex(int[] arr int key)
{
   int min=0;
   int max=arr.length-1;
   int mid=(min+max)/2
   while(arr[mid]!=key)
  {
        if(key>arr[mid])
         {
           mid+=1;
          }
       else if(key<arr[mid])
         {
               max-=1;
         }
         mid=(min+max)/2;
  }
    return mid;
}
   数组的应用
题目:进制之间的转化,
//十进制转换成十六进制
    public static void toHex(int num){
        trans(num, 15, 4) ;
    }
    //十进制转换成八进制
    public static void toBa(int num){
        trans(num, 7, 3) ;
    }
    //十进制转换成二进制
    public static void toBin(int num){
        trans(num, 1, 1) ;
    }
    public static void trans(int num, int base, int offset) {
        char[] hex = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
                'B', 'C', 'D', 'E', 'F' };
        char[] ch = new char[32];
        int pos=ch.length;
        while (num != 0) {
            int temp=num&base;
            ch[--pos]=hex[temp];
            num=num>>>offset;
        }
        for(int x=pos;x<ch.length;x++){
            System.out.print(ch[x]);
        }    
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值