3.3数组中涉及到的常见算法

1.数值元素的赋值(杨辉三角,回形数等)

2.求数值型数组中元素的最大值,最小值,平均数,总和等

3.数组的复制,反转,查找(线性查找,二分法查找)

4.数组元素的排序算法

2.求数值型数组中元素的最大值,最小值,平均数,总和等

题目:定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后

求出所有元素的最大值,最小值,和值,平均值,并输出出来.

要求:所有随机数都是两位数.

[10,99]

公式:(int)(Math.random()*(b-a+1)+a)

public class ArrayTest1{
    public static void main(String[] args){
        int[] arr = new int[10];
        for(int i = 0;i <arr.length;i++){
            arr[i] = (int)(Math.random()*(99-10+1)+10);      
        } 
        //遍历
        for(int i = 0;i < arr.length;i++){
             System.out.print(arr[i]+"\t");       
        } 
        System.out.println();
        
        //求最大值
        int maxValue = arr[0];
        for(int i = 1;i <arr.length;i++)  {
            if(maxValue < arr[i]){
                maxValue = arr[i];            
            }        
        }
        System.out.println("最大值为:"+maxValue);
        
        //求最小值
        int minValue = arr[0];
        for(int i = 1;i <arr.length;i++)  {
            if(minValue > arr[i]){
                minValue = arr[i];            
            }        
        }
        System.out.println("最小值为:"+minValue);
        
        //元素总和
        int sum = 0;
        for(int i = 0;i < arr.length;i++){
            sum += arr[i];        
        }
        System.out.println("总和为:"+sum);
        
        //数组的平均数
        int avgValue = sum/arr.length;
        System.out.println("平均数为:"+avgValue);
        
    }
}

3.数组的复制,反转,查找(线性查找,二分法查找)

1.

思考:array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体

public class ArrayTest2{
    public static void main(String[] args){
        int[] array1,array2;
        array1 = new int[]{2,3,5,7,11,13,17,19} ;
        //遍历,显示array1的内容
        for(int i = 0;i < array.length;i++){
            System.out.print(array[i]+"\t") ;       
        } 
        //赋值array2变量等于array1  
        array2 = array1;
        //修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)
        for(int i = 0;i < array1.length;i++){
            if(i%2 == 0){
                array2[i] = i;            
            }        
        }
        //打印出array1
        for(int i = 0;i < array1.length;i++){
            System.out.print(array[i]+"\t") ;       
        }
        //修改题目:实现array2对array1的复制
        for(int i = 0;i <array1.length;i++){
            array2[i] = array1[i]  ;      
        }
        
    }
}

 2.

public class ArrayTest2{
    public static void main(String[] args){
         String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};
         
         //数组的复制
         String[] arr1 = new String[arr.length];
         for(int i = 0;i<arr1.length;i++){
             arr1[i] = arr[i];         
         }   
        
          //数组的反转
        /* 方式1:
         for(int i = 0;i <arr.length/2;i++){
             String temp = arr[i];
             arr[i] = arr[arr.length-i-1];
             arr[arr.length-i-1] = temp;         
         }
         //方式2:
            for(int i = 0;j = arr.length - 1;i < j;i++;j--){
                String temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;            
            } 
            */
         //遍历
         for(int i = 0;i <arr.length;i++){
                System.out.print(arr[i]+"\t");      
         }
         System.out.println();
         
         //查找
         //线性查找:
             String dest = "BB";
             boolean isFlag = true;
             for(int i = 0;i <arr.length;i++){
                   if(dest.equals(arr[i])){
                       System.out.println("找到了指定的元素,位置为:"+i);
                       break;                   
                   }           
             }
             if(isFlag){
             System.out.println("未找到指定元素");
             }
             
             //二分查找(前提:所要查找的数组必须要有序)
             int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105};
             int dest1 = -34;
             int head = 0;  //初始的首索引
             int end = arr2.length-1;  //初始的末索引
             boolean isFlag1 = true;
             while(head <= end){
                 int middle = (head+end)/2;   //定义中心
                 if(dest1 == arr2[middle]){
                     System.out.println("找到了指定的元素,位置为:"+i) ;
                     isFlag1 = false;
                     break;                
                 }else if(arr2[middle]>dest1){
                     end = middle-1;               
                 }else{   //arr2[middle]<dest1
                     head = middle+1;                 
                 }            
             }
             if(isFlag1){
                   System.out.println("未找到指定元素");            
             }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RiamyLiu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值