数组是相同数据类型的数据按顺序组成的一组引用数据;
一维数组:int [] name ;二维数组:int [] [] name ;
实例化数组:两种方法----------
1:指定数组长度;
int [] name;
name= new int [4];
int [] [] name;
name=new int [ 2] [3];
2:穷举法;
int [] name={1,2,3,4,5,6};
int [] [] name={{1,2,3},{4,5,6},{7,8,9}};对称型
int [] [] name={{1,2},{4,5,6},{7,8,9,10}};非对称型
使用穷举法时,数组名前必须有声明代码。
遍历:

for(int i=0;i<name.length;i++){
int [] term=name[i];
System.out.println(term[i]);
}

加强循环遍历二维数组

for(int [] name:names){
for(int i:name){
System.out.println(i);
	}

}
冒泡排序法:

public class ArraySort{
	public static void main(String [] args){
		int [] array={21, 99, 3, 1024, 16};//升序排列
		for(int loopTime=1;loopTime<array.length;loopTime++){//只是控制内部for循环的次数
			for(int i=0;i<array.length-loopTime;i++){//该for循环每循环一次就会将较大的数据放在适当的位置,比如loopTime=1;则将最大数据放在最后;loopTime=2;则将第二大数据放在倒数第二个元素位置;array.length-loopTime:从提高代码的性能角度出发,减少该循环“多余”的循环次数
				int currentData = array[i];//当前遍历出来的数据
				int nextData = array[i+1];//当前数据下标对应的下一个元素的数据
				if(currentData>nextData){//如果当前元素大于其后面的元素,则意味着需要调换两个元素之间的位置
					array[i] = nextData;
					array[i+1]=currentData;
				}
			}
		}

		for(int data:array){
			System.out.print(data+" ");
		}
	}

插入法排序:

public class ArraySort{

	public static void main(String [] args){
		int [] array={1,2,6,7,2,9,12,2};//升序排列
		for(int i=1;i<array.length;i++){//i为待排序数据的下标,由于将第一个元素是有序的,所以i从1开始;i<array:这样才能遍历完后续数组,进而实现全部排序;
			int willSortData=array[i];//将待排序数据保存到变量willSortData中
			int j=0;
			/*
			 *查找待插入数据“应该”插入的下标位置
			 */
			for(;j<i;j++){//j<i:和待排序数据前面(i)的所有元素进行比较,以找到“应该”插入的下标位置。说明:不能这样写j<=i,因为无需自己和自己比对
				if(willSortData<array[j]){//如果条件成立意味着待插入数据小于其前面的某个元素值
					break;//当if条件成立时就找到了该待插入数据“应该”插入的下标位置,所以这时必须终止循环
				}
			}//for循环执行结束意味着找到了待插入数据“应该”插入的下标位置

			/*
			 *下面循环用于元素后置
			 */
			for(int k=i;k>j;k--){//int k=i:待插入数据所在位置就是元素后移开始的下标位置;k>j:待插入数据“应该”插入位置(j)就是元素后移结束位置
				array[k]=array[k-1];//元素后置
			}
			
			/*
			 *下面代码用于将待插入数据插入到“应该”插入的下标位置
			 */
			array[j]=willSortData;
		}//该循环体每循环完一次就代表着本次待插入数据已经和前面元素是有序的了

		for(int data:array){
			System.out.print(data+" ");
		}
	}

二分法查找:

import java.util.Arrays;

public class Test {

	public static int search(int[] array, int data) {
		Arrays.sort(array);// 将数组升序排列
		
		int low = 0;
		int high = array.length - 1;
		while (low <= high) {
			int middle = (low + high) / 2;
			// 搜索数据与中间元素比较确定在中间元素左边还是右边,进而不断缩小查找范围
			if (data > array[middle]) {//右边
				low = middle + 1;
			} else if (data < array[middle]) {//左边
				high = middle - 1;
			} else {
				return middle;
			}
		}
		return -1;
	}

	public static void main(String[] args) {
		int[] numbers = {5, 1, 7, 3, 2};
		int index = search(numbers, 5);
		if (index != -1) {
			System.out.println("数组中包含该数据");
		} else {
			System.out.println("数组中不包含该数据");
		}
	}
}