数组的常用算法 (最大值 最小值 平均值 总和 复制 反转 排序)

1.求数组的最大值,最小值,平均值 ,总和

2.数组的复制,反转

3.数组元素的排序:

冒泡排序思想:相邻两元素进行比较,如果需要则进行交换,每完成一次循环就将最大元素排到最后(从小到大排序),下一次循环就将其它的数进行类似操作

 

直接排序思想:那第一个和后面的比较遇到比它小的互换,接着再和后面的比较,一轮下来可以得到第一位最小元素,后面同理。都是拿第一个去比较,得到这轮最小的

 

public class TestArray3 {
    public static void main(String[] args) {
        int[] arr = new int[] { 12, 12, 345, 34, -32, -58, 232, 43 };
        // 最大值
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (max < arr[i]) {
                max = arr[i];
            }
        }
        System.out.println("最大值:" + max);

        // 最小值
        int min = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (min > arr[i]) {
                min = arr[i];
            }
        }
        System.out.println("最小值:" + min);

        // 总和
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println("总和:" + sum);

        // 平均值
        int avg = 0;
        avg = sum / arr.length;
        System.out.println("平均值:" + avg);

        // 数组元素的复制和反转
        int[] arr1 = new int[arr.length];
        for (int i = 0; i < arr1.length; i++) {
            arr1[i] = arr[i];
            System.out.print(arr1[i] + "\t");
        }
        System.out.println();

        // 数组元素的反转
        // 方法一:
        /*
         * for (int i = 0; i < arr.length / 2; i++) { int temp = arr[i]; arr[i]
         * = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = temp; }
         */
        // 方法二:
        for (int x = 0, y = arr.length - 1; x < y; x++, y--) {
            int temp = arr[x];
            arr[x] = arr[y];
            arr[y] = temp;
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
        System.out.println();

        // 排序:使用冒泡排序 使数组从小到大排序
        /*
         * for (int i = 0; i < arr.length - 1; i++) {// 轮数 for (int j = 0; j <
         * arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp =
         * arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }
         */
        // 直接选择排序:小到大
        for (int i = 0; i < arr.length - 1; i++) {
            int t = i;// 默认i处是最小的
            for (int j = i; j < arr.length; j++) {
                // 一旦发现i后面存在比其还小的元素,就记录那个元素的下角标
                if (arr[t] > arr[j]) {
                    t = j;
                }
            }
            if (t != i) {
                int temp = arr[t];
                arr[t] = arr[i];
                arr[i] = temp;
            }
        }

        
        System.out.println("排序后:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
    }
}

 

posted @ 2020-03-11 14:06  林淼零  阅读(550)  评论(0编辑  收藏  举报