Java Array

import java.util.Random;
import java.util.Scanner;

public class Week6Lecture {
    public static void main(String[] args) {
        int size = 100;
        int [] num = new int[size];
        num[0] = 12;
        num[num.length-1] = 89;
        for (int i=0;i<=99;i++){
            System.out.println(num[i]);
        }

        //initialize array
        char [] symbol = {'$','%','+','-'};

        // dynamic array based on input 动态数组的大小
        int [] status;
        Scanner s = new Scanner(System.in);
        System.out.print("Enter number of record: ");
        int record = s.nextInt();
        status = new int[record];

        // arrayName.length 就是长度, 用于确认最后一个值 比如 num[num.length-1]
        // 里边的值定义后也可以改 比如:
        symbol[2] = '*';

        //display all the elements of the array 那就用for呗
        //两种 普通的那种可以改数组数值 另一种只能输出用
        //(1)
        for (int i =0; i<symbol.length; i++){
            System.out.println(symbol[i]);
        }
        //(2)
        for (char value : symbol){
            System.out.println(value);
        }
        Random r = new Random();
        final int MAX = 100;
        int newsize = 20;
        int [] newnum = new int[newsize];
        for (int i = 0 ; i < newnum.length; i++){
            newnum[i] = r.nextInt(MAX+1);
            System.out.print(newnum[i]+" ");
        }
        System.out.println();

        // change the array size, the values inside will be removed.

        // Display the number of female students from a random list of 100 students
        // char M = Male, F = Female
        char[] gender = {'M','F'};
        char[] student = new char[size];
        for (int i = 0 ; i <student.length; i++){
            student[i] = gender[r.nextInt(2)];
        }
        int cntFemale = 0;
        for (int i = 0; i<student.length; i++){
            if (student[i] == 'F'){
                cntFemale++;
            }
        }
        System.out.println("The number of Female students: " + cntFemale);

        // split a String
        String str = "NIU ZHAO HANG";
        String[] info = str.split(" ");
        for (int i =0;i<info.length;i++){
            System.out.print(info[i] + ",");
            System.out.print(str.charAt(i));//用来输出每个字母
        }
        System.out.println();

        // Multidimensional Array
        double[][] scoreTable = new double[4][5];
        int[][][] threeD = new int[1][2][3];
        int[][] matrix = {{1,2},{4,5}};
        char[][] symboL = {{'*','/'},{'+','-'}};
        for (int i=0;i<symboL.length;i++){
            for (int n=0;n<symboL[i].length;n++){
                System.out.print(symboL[i][n]);
            }
        }

        // ragged arrays 不规则数组

        // Linear search
        System.out.print("\nEnter number to search: ");
        int key = s.nextInt();
        boolean search = false;
        for(int i=0;i<newnum.length;i++){
            if (key==newnum[i]){
                System.out.println("Found in position " + i);
                search = true;
                break;
            }
        }
        if (!search){
            System.out.println("Not Found");
        }

        // ** Bubble Sort 冒泡排序 **
        // https://sm.ms/image/bDtLJVWH8wAEMmY
        for (int pass=0; pass<newnum.length-1; pass++){
            for (int i=0;i<newnum.length-1-pass; i++){
                if (newnum[i] > newnum[i+1]){
                    int hold = newnum[i];
                    newnum[i] = newnum[i+1];
                    newnum[i+1] = hold;
                }
            }
        }
        for (int i =0;i<newnum.length;i++){
            System.out.print(newnum[i]+" ");
        }
        System.out.println();


        // Binary Search 只能搜排序过的数组 这个例子有问题 随后改改
        int low = 0;
        int high = newnum.length-1;
        boolean search2 = false;
        System.out.print("ENTER THE NUMBER TO SEARCH: ");
        int key2 = s.nextInt();
        while (low <= high){
            int middle = (low + high) /2 ;
            if (key2 == newnum[middle]) {
                System.out.println("FOUND IN POSITION " + middle);
                search2 = true;
                break;
            }else if (key < num[middle]){
                high = middle -1;
            }else{
                low = middle + 1;
            }
            if (!search2){
                System.out.println("NOT FOUND");
            }
        }









    }
}