1. Assignment
Two assignment methods
Static initialization: define the contents of the array directly from the beginning
Dynamic initialization: open up the space first, and then assign values later. You can not assign all values (at this time, the initial values are not assigned, such as 0 and null)
// statement int[] ids; //1.1 static initialization; The initialization of array and the amplitude operation of array elements are carried out at the same time. ids = new int[]{100,100,1002,1003};//Reference data type, so new is required //1.2 dynamic initialization //Array initialization and array element amplitude operation separate. conduct String[] names = new String[6]; //names do not need to be declared like ids above? // Assign value later names[0] = "asd"; names[1] = "miracleli"; /* Try assigning some values. Not all of them are assigned. names[2] = "Assad "; names[3] = "213e"; names[4] = "qwe"; */
2. Traversal
The for loop keeps running out. println();
for(int i=0; i<ids.length;i++) { System.out.println(ids[i]); }
Search, assignment, flipping and sorting of arrays
1. Assignment of array elements (Yang Hui triangle, loop number, etc.)
Output the first ten lines
package com.atguigu.java; public class YangHuiSanJiao { public static void main(String[] args) { int[][] arr = new int[10][]; arr[0] = new int[]{1}; arr[1] = new int[]{1,1}; for(int i = 2;i<arr.length;i++) { arr[i] = new int[i+1]; arr[i][0] = 1; arr[i][i]=1; for(int j = 1;j<arr[i].length-1;j++) { arr[i][j] = arr[i-1][j-1]+arr[i-1][j]; } } for(int i = 0;i<arr.length;i++) { for(int j = 0;j<arr[i].length;j++) { System.out.print(arr[i][j]+"\t"); } System.out.println(); } } }
2. Find the maximum, minimum, average, sum, etc. of the elements in the numerical array
package com.atguigu.exer; /* * * Define a one-dimensional array of int type, containing 10 elements, and assign some random integers respectively, Then find the maximum, minimum, sum and average values of all elements and output them. Requirement: all random numbers are two digits. [10,99] Math.random()The value range of is [0,1) */ public class ArrayExer1 { public static void main(String[] args) { int[] arr = new int[10]; int all=0; double avg = 0.0; for(int i=0; i<arr.length;i++) { arr[i] = (int)(Math.random()*(99-10+1)+10); //Casts should be enclosed in parentheses (int) all += arr[i]; System.out.print(arr[i]+"\t"); } //average value avg = (double)all/arr.length; int max = arr[0]; int min = arr[0]; for (int i = 1; i < arr.length; i++) { if(arr[i]<min) { min = arr[i]; } else if(arr[i]>max) { max = arr[i]; } } System.out.println("And the value is:"+all); System.out.println("The maximum value is:"+max); System.out.println("The minimum value is:"+min); System.out.println("The average value is:"+avg); } }
3. Array copy, inversion and search (linear search, dichotomy search)
- Copy (different from the assignment of array variables)
// Copy of array for(int i = 0;i<array2.length;i++) { array2[i] = array1[i]; }
If array2 = array1;
At this time, if array2 print s, it is the same as array1. However, if array2 is modified, the value in array1 will also change. The reason is that array2 = array1; This will cause array2 to store the same memory address as array1. These two variables point to the same memory space. As long as you change one of them, the other will also change. Usually, when doing this for assignment, it is easy to modify array2 subsequently, resulting in the change of array1. At this time, there is no error, so it is difficult to shoot the problem. Therefore, it is generally assigned through the for loop.
- reversal
Inversion is to swap the front and back elements of the array, and in turn, get a new layoutString[] arr = new String[]{"AA","BB","MM","GG","DD","xx"}; //Use temporary variables for(int i =0;i<arr.length/2;i++) //It's divided by two { String temp = arr[i]; //This is not a String array, so new is not required. arr[i] = arr[(arr.length-1)-i]; //Note here that minus 1, because the first one is 0 and the last one is arr.length-1 arr[(arr.length-1)-i] = temp; }
The reverse result is as follows: correct
- Find / search (linear, dichotomy)
- Linear search (carpet search)
- Linear search (carpet search)
// Linear search String[] arr = new String[]{"AA","BB","MM","GG","DD","xx"}; String dest = "BB"; boolean isfalg = false; for(int i = 0;i<arr.length;i++) { if(dest.equals(arr[i])) { System.out.println("The specified element was found at:"+i); isfalg = true; break; } } if(isfalg) { System.out.println("Can't find"); }
- Binary search
Must be an ordered array to find by dichotomy. What is an ordered array? [1,2,3,4,5,6] and [7,6,4,3,2,1] are ordered arrays. [1,3,1,4,5,2] is not an ordered array. That is to say, if the element values in the array are arranged from small to large or from large to small, you can use binary search.
Specific algorithm:
//Binary search // The array to be searched must be ordered (from small to large or from large to small) int[] arr2 = new int[]{-123,-43,-22,-3,33,52,91,232,}; int dest1 = 33; int head = 0; //Initial first index int end = arr2.length-1;//Initial last index boolean isFlag = false; while(head<=end) { int middle = (head+end)/2; if(arr2[middle] == dest1) { System.out.println("The specified element was found at:"+middle); isFlag = true; break; } else if(arr2[middle]<dest1) { head = middle+1; } else { end = middle-1; } } if(!isFlag) { System.out.println("The specified element was not found"); }
4. Sorting algorithm of array elements
Sometimes, in order to find faster, you need to use dichotomy, which can only be used for ordered data, so you have to sort first.
The title of the sorting algorithm will be updated later
Top ten internal sorting algorithms
The implementation idea must know that java is encapsulated, but the most basic thing is to be able to write by hand
Bubbling:
The idea of quick sorting should be understood. One element can be arranged to its final position at a time, and the length of the array is divided into two segments for continuous classification
If you don't know the amount, take an example and find the law.
It doesn't mean which is the best. There are applicable cases.