• 基础数组算法问题


      今日,java课上机,旁边一同学让我写一个排序算法,虽然之前学过数据结构,但当时我却真心没回忆起来,于是乎,课后,我回到宿舍,用Java将这几个基本的数组排序问题写了一下。其实,看起来很简单,可是当时确实没有回忆起来。很不应该!以下代码我自己测试了,均能运行。写这篇博文,也是为了提醒我自己,以后这种基本的东西必须得让自己多留几个心眼!

    package exercise;
    
    public class TestArray {
        //求数组的最大值
        public int getMax(int[] arr){
            int max = arr[0];
            for(int i = 1;i<arr.length;i++){
                if(max < arr[i]){
                    max = arr[i];
                }
            }
            return max;
        }
        //求数组的最小值
        public int getMin(int[] arr){
            int min = arr[0];
            for(int i = 1;i<arr.length;i++){
                if(min >arr[i]){
                    min = arr[i];
                }
            }
            return min;
            
        }
        //遍历数组元素
        public void printArray(int[] arr){
            System.out.println("[");
            for(int i = 0;i<arr.length;i++){
                System.out.print(arr[i]+"	");
            }
            System.out.println("]");
        }
        //求数组的的平均数
        public int avg(int[] arr){
            /*int sum = 0;
            for(int i = 0;i<arr.length;i++){
                sum += arr[i];
            }*/
            int sum = getSum(arr);
            return sum/arr.length;
            
        }
        //求数组的总和
        public int getSum(int[] arr){
            int sum = 0;
            for(int i = 0;i<arr.length;i++){
                sum += arr[i];
            }
            return sum;
        }
        
        //数组的反转
        public int[] reverse(int[] arr){
            for(int x = 0,y = arr.length-1;x<y;x++,y--){
                int temp = arr[x];
                arr[x] = arr[y];
                arr[y] = temp;
            }
            return arr;
        }
        //实现数组的复制
        public int[] copy(int[] arr){
            /*
             * int[] arr1 = arr;
             * return arr1; 
             * */
            int[] arr1 = new int[arr.length];//设置复制后的数组长度与原数组的长度一样
            for(int i = 0;i<arr.length;i++){
                arr1[i] = arr[i];
            }
            return arr1;
            
        }
        //对数组进行排序--冒泡排序
        public void sort(int[] arr,String desc){
            if(desc == "asc"){//ascend:表示从小到大
            for(int i = 0;i<arr.length;i++){
                for(int j = 0;j<arr.length-1-i;j++){
                    if(arr[j]>arr[j+1]){
                        swap(arr,j,j+1);
                    }
                }
            }
          }else if( desc == "desc"){//descend:表示从大到小
              for(int i = 0;i<arr.length;i++){
                    for(int j = 0;j<arr.length-1-i;j++){
                        if(arr[j] < arr[j+1]){
                            swap(arr,j,j+1);
                        }
                    }
                }
             }
          else{
              System.out.println("您输入的排序方式有误");
          }
        }
        //交换数组中指定位置的元素--交换数组arr中索引为i和j位置处的元素
        public void swap(int[] arr,int i,int j){
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        
        
    }
    package exercise;
    import exercise.TestArray;
    
    public class TestArray1 {
       public static void main(String[] args){
           int[] arr = new int[]{12,4,23,56,67,36,57,23,45,14,-23,-4};
           TestArray t = new TestArray();
           
           int avg = t.avg(arr);
           System.out.println("avg :"+avg);
           
           int max = t.getMax(arr);
           System.out.println("Max:"+max);
           
           
           
           System.out.println("反转之前!");
           t.printArray(arr);
           
           t.reverse(arr);
           
           System.out.println("反转之后!");
           t.printArray(arr);
       }
    }
  • 相关阅读:
    C#计算代码的执行耗时
    c#值类型和引用类型
    C#类、接口、虚方法和抽象方法
    15,了解如何在闭包里使用外围作用域中的变量
    函数闭包,golbal,nonlocal
    init())函数和main()函数
    函数的命名空间
    函数的默认参数是可变不可变引起的奇怪返回值
    遍历目录
    super顺序
  • 原文地址:https://www.cnblogs.com/Terminaling/p/4095859.html
Copyright © 2020-2023  润新知