跟着IT彭于晏学JAVA之数组,排序,查找

1.数组

数组(容器) 
 * 保存一组相同数据类型的数据
 * 数据类型 变量名 = 初值;
 * 
 * 声明数组格式:
 * 数据类型[] 数据名 = 初值;
 * 注意:这里的数据类型 指的是 数组中保存的数据的类型

2.数组的3种定义方法

* 数组声明方式一
 * int[] array = new int[数组的元素个数];
int[] array = new int[5];
//new 表示 跟堆内存中开辟的空间

// array[下标]=值
array[0] = 5;
array[3] = 10;
array = null;



//声明数组方式二(又给长度又给元素)
int [] array = new int []{1,3,5,11};

//语法糖(方式三)
int[] array1 = {1,3,5,7,9};
			 	

3.数组的内存图


changeArray(array);
// 直接打印数组 [I@6d06d69c hashCode码

4.有趣的冒泡排序

冒泡排序
 核心思想:相邻两个数比较 换位
 外循环 控制一共比了多少趟
		 
public class Demo05 {
	public static void main(String[] args) {
		int[] array = { 3, 2, 5, 1 };
		/*
		 * 外循环 控制一共比了多少趟
		 * 内循环 控制一趟比了多少次
		 * 内循环-1  防止数组越界
		 * 内循环-i 循环一次 确定一个数  每次少比一个
		for (int i = 0; i < array.length - 1; i++) {
			for (int j = 0; j < array.length - 1; j++) {
				//判断大小 相邻
				if (array[j] > array[j + 1]) {
				//交换
				int t = array[j];
				array[j] = array[j + 1];
				array[j + 1] = t;
				}
			}

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

		}
	}

5.好玩的选择排序

 选择排序
 核心思想:选择一个数(选第一个数)和其让他的数比较 交换

public static void sort(int[] array){
			for (int i = 0; i < array.length-1; i++) {
				for (int j = i+1; j < array.length-i; j++) {
					//用第0个数 和剩下的每一个数比较
					//量化思维
					//i = 0  j 1 2 3
					//i = 1  j 2 3
					//i = 2  j 3
					if(array[i]>array[j]){
						//交换
						int t = array[j];
						array[j] = array[i];
						array[i] = t;
					}
				}
			}
			
		}

6.省力的折半查找(必须是有序数列)

public static void main(String[] args) {
		int[] array = { 1, 22, 33, 44, 55, 66 };
		int key = 66;
		int min = 0;
		int max = array.length - 1;
		int mid = (min + max) / 2;
		// 循环---明确知道循环的停止条件
		while (array[mid] != key) {
			// 判断key和中间角标的值
			// 来挪动 最小或最大角标
			if (key > array[mid]) {
				min = mid + 1;
			}
			if (key < array[mid]) {
				max = mid - 1;
			}
			// 每次循环都要有折半的操作
			mid = (min + max) / 2;
			// 数组中没有这个数时候
			if (min > max) {
				// 没有这个数 使用-1表示
				mid = -1;
				break;
			}
		}
		System.out.println("该值的坐标的是:" + mid);
	}

7.多维数组(二维及二维以上)

二维数组(容器)
 * 保存多个相同类型的一位数组
 * (几维数组 就几个[])
 * 数组类型[][] 数组名 = 初值;
 * 
 * 三维数组
 * 保存多个相同类型的二维数组
//声明方式二
//1,11,111 /2,22,222
int[][] array1 = new int[][] {
        {1,111,1111},
	{2,22,222},
				};
二维数组的遍历
				
for (int i = 0; i < array1.length; i++) {
					for (int j = 0; j < array1[i].length; j++) {
						System.out.print(array1[i][j]+" ");
					}
				}	


猜你喜欢

转载自blog.csdn.net/weixin_42120532/article/details/80230917