求最值

/*
需求
定义一个数组,包含33,5,22,44,55,求出该数组中的最大值和最小值
 */

package leetcode;

public class Maximum {
    public static void main(String[] args) {
        int arr[] = {33,5,22,44,55};
        int max = arr[0];
        int min = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] > max){
                max = arr[i];
            }else if(arr[i] < min){
                min = arr[i];
            }
        }
        System.out.println("最大值为"+max);
        System.out.println("最小值为"+min);
    }
}

遍历数组求和

/*
需求:
生成10个1-100之间的随机数存入数组
(1)求出所有数据之和
(2)求出所有数据的平均值
(3)统计有多少个数据比平均值小
 */

package leetcode;

import java.util.Random;

public class P57 {
    public static void main(String[] args) {
        int arr[] = new int[10];
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int number = r.nextInt(100) + 1;
            arr[i] = number;
        }
        float sum = 0.0f;
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
            sum = sum + arr[i];
        }
        float pj = 0.0f;
        pj = sum / arr.length;
        System.out.println("数组之和为:"+sum);
        System.out.println("数组平均值为:"+pj);
        int flag = 0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] < pj){
                flag++;
            }
        }
        System.out.println("一共有"+flag+"个数据比平均值大");
    }
}

交换数据

/*
需求:
定义一个数组,包含1,2,3,4,5
将该数组数据进行交换,变为5,4,3,2,1,并输出交换后的数组
 */

package leetcode;

public class P58 {
    public static void main(String[] args) {
        int arr[] = {1,2,3,4,5};
        System.out.print("原数组为: ");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println("\n");
        for(int i = 0, j = arr.length - 1; i < j; i++,j--){
            int d = arr[i];
            arr[i] = arr[j];
            arr[j] = d;
        }
        System.out.print("交换后为: ");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
}

数组排序(选择排序)

选择排序也是一种简单直观的排序算法,实现原理比较直观易懂:
首先在未排序数列中找到最小元素,然后将其与数列的首部元素进行交换,然后,在剩余未排序元素中继续找出最小元素,将其与已排序数列的末尾位置元素交换。以此类推,直至所有元素圴排序完毕.

同理,可以类比与打扑克和打麻将, 和上面插入排序不同, 插入排序相当于抽一张牌整理好了再抽一张, 而选择排序相当于一次性给你一副乱牌, 然后慢慢整理的感觉.
这也容易理解为什么选择排序为啥比插入排序慢了. 插入排序是摸一张牌, 然后直接插入到手中已经排好序的牌,再摸下一张牌.
选择排序相当于在一堆牌中, 不断的找到最小的牌往前面放

上述解释及图摘自:https://blog.csdn.net/zzzgd_666/article/details/87634775

/*/
定义一个随机数组,在数组中存入随机生成的1-100之间的10个数据
将这个10个数据按由小到大进行排序并打印出来
选择排序
 */

package leetcode;

import java.util.Random;

public class Array_sorting {
    public static void main(String[] args) {
        int arr[] = new int[10];
        Random r = new Random();
        System.out.print("原数组为: ");
        for (int i = 0; i < arr.length; i++) {
            //先遍历一遍数组
            arr[i] = r.nextInt(100) + 1;
            System.out.print(arr[i] + " ");
        }
        System.out.print("\n排序后为: ");
        for(int i = 0; i < arr.length ; i++){
            int d = i;//遍历区间的最小值
            for (int j = i; j < arr.length ;j++){
                if(arr[j] < arr[d]){
                    d = j;// 找到当前遍历区间最小的值的索引
                }
            }//找到当前最小索引后退出该循环,进入下方条件语句
            if(d != i){
                //进行调换:如果上方找到的最小索引不等于初始索引,则进行调换
                int temp =  arr[d];
                arr[d] = arr[i];
                arr[i] = temp;
            }
            System.out.print(arr[i]+" ");
        }
    }
}