ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-01-02 14:32:45  阅读:149  来源: 互联网

标签:arr String int array2 array1 算法 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("未找到指定元素");            
             }
    }
}

标签:arr,String,int,array2,array1,算法,3.3,数组
来源: https://blog.csdn.net/RiamyLiu/article/details/122276185

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有