基础数组算法问题

  今日,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);
   }
}

 

posted @ 2014-11-13 20:55  Terminaling  阅读(259)  评论(0编辑  收藏  举报