数组大法

今天又看了看数组,觉得数组能做的事挺多的,于是就写了一些数据公共的方法,等以后有时间需要专门写一篇关于所有排序算法的理解以及相关程序的实现,今天先写了一些基本的东西

  1 package com.baseoop;
  2 
  3 //建立一个数组的工具类
  4 public class ArrayUtils {
  5     //获取数组的最大值
  6     public int getMax(int[] arr) {
  7         int max = arr[0];
  8         for (int i = 0; i < arr.length; i++) {
  9             //max = arr[0];
 10             if (max < arr[i]) {
 11                 max = arr[i];
 12             }
 13         }
 14         return max;
 15     }
 16 
 17     //获取数组的最小值
 18     public int getMini(int[] arr) {
 19         int min = arr[0];
 20         for (int i = 0; i < arr.length; i++) {
 21             if (min > arr[i]) {
 22                 min = arr[i];
 23             }
 24         }
 25         return min;
 26     }
 27 
 28     //遍历数组元素
 29     public void printArray(int[] arr) {
 30         System.out.print("[");
 31         for (int i = 0; i < arr.length; i++) {
 32             System.out.print(arr[i] + "\t");
 33         }
 34         System.out.println("]");
 35 
 36 
 37     }
 38 
 39     //求数组的平均值
 40     public int averArr(int[] arr) {
 41         int ave = 0;
 42         int sum = 0;
 43         for (int i = 0; i < arr.length; i++) {
 44             sum = sum + arr[i];
 45             ave = sum / arr.length;
 46         }
 47         return ave;
 48     }
 49 
 50     //求数组的总和
 51     public int getArrSum(int[] arr) {
 52         int sum = 0;
 53         for (int i = 0; i < arr.length; i++) {
 54             sum = sum + arr[i];
 55         }
 56         return sum;
 57     }
 58 
 59     // 数组的反转
 60     public int[] reverseArr(int[] arr) {
 61         for (int a = 0, b = arr.length - 1; a < b; a++, b--) {
 62             int temp = arr[a];
 63             arr[a] = arr[b];
 64             arr[b] = temp;
 65 
 66         }
 67         return arr;
 68     }
 69 
 70     //数组的复制
 71     public int[] copyArr(int[] arr) {
 72         int[] arr1 = new int[arr.length];
 73         for (int i = 0; i < arr1.length; i++) {
 74             arr1[i] = arr[i];
 75         }
 76         return arr;
 77     }
 78 
 79     //数组的排序--使用冒泡排序从小到大排序
 80     public void sortArray(int[] arr) {
 81         for (int i = 0; i < arr.length - 1; i++) {
 82             for (int j = 0; j < arr.length - 1 - i; j++) {
 83                 if (arr[j] > arr[j + 1]) {
 84                     int temp = arr[j];
 85                     arr[j] = arr[j + 1];
 86                     arr[j + 1] = temp;
 87                 }
 88             }
 89         }
 90         printArray(arr);
 91     }
 92 
 93     //对数组使用直接选择排序算法排序
 94     public void selectSort(int[] arr) {
 95         for (int i = 0; i <arr.length-1 ; i++) {
 96             for (int j = i; j <arr.length ; j++) {
 97                 if(arr[i]>arr[j]){
 98                     int temp = arr[i];
 99                     arr[i] = arr[j];
100                     arr[j] = temp;
101                 }
102             }
103         }
104         printArray(arr);
105     }
106     //直接选择排序1
107     public  void  selectSortArr(int[] arr){
108         int temp; //辅助节点
109         for (int i = 0; i <arr.length-1 ; i++) {    //n-1趟排序
110             //每趟再从arr[i]开始的子序列中寻找最小关键字的记录
111             int min = i;  //设置第i条记录的关键字值最小
112             for (int j = i+1; j <arr.length ; j++) { //在子序列中选择关键字最小的记录
113                 if (arr[j] < arr[min]){
114                     min = j;  //记住关键字值最小记录的下标
115                 }
116 
117             }
118             if(min != i){  //将本趟关键字值最小记录与第i条记录交换
119                 temp = arr[i];
120                 arr[i] = arr[min];
121                 arr[min] = temp;
122             }
123         }
124         printArray(arr);
125     }
126 
127 }

然后写了一个测试类,测试一下 

 1 package com.baseoop;
 2 
 3 public class TestArrayUtils {
 4     public static void main(String[] args) {
 5         int[] arr = new int[]{12, 23, 11, 56, -2, 34, 43};
 6         ArrayUtils arrayUtils = new ArrayUtils();
 7         int max = arrayUtils.getMax(arr);
 8         System.out.println("数组arr的最大值是:" + max);
 9         int min = arrayUtils.getMini(arr);
10         System.out.println("数组arr的最小值是:" + min);
11         System.out.println("===================");
12         //System.out.println("数组arr的遍历结果是:"+arrayUtils.printArray(arr));
13         arrayUtils.printArray(arr);
14         System.out.println("数组排序:");
15         arrayUtils.sortArray(arr);
16         System.out.println("数组求和");
17         int sum = arrayUtils.getArrSum(arr);
18         System.out.println(sum);
19         System.out.println("数组求平均数");
20         double avg = arrayUtils.averArr(arr);
21         System.out.println(avg);
22         System.out.println("使用直接选择排序");
23         arrayUtils.selectSort(arr);
24         System.out.println("直接选择排序1");
25         arrayUtils.selectSortArr(arr);
26 
27 
28 
29 
30 
31 
32     }
33 }

运行结果如下图:

 

posted @ 2018-03-13 19:48  答案An  阅读(144)  评论(0编辑  收藏  举报