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

2022/1/2 14:38:38

本文主要是介绍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("未找到指定元素");            
             }
    }
}



这篇关于3.3数组中涉及到的常见算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程