首页 > 代码库 > 基础数组算法问题

基础数组算法问题

  今日,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]+"\t");        }        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);   }}

 

基础数组算法问题