第一章:Java基础知识:数组二分法、冒泡算法、Arrays常用工具类

这篇博客展示了Java编程中的两种基础算法:冒泡排序和二分查找。冒泡排序用于对数组进行排序,通过相邻元素的比较和交换达到排序目的。二分查找则在有序数组中查找目标值,通过不断缩小搜索范围来提高查找效率。示例代码详细解释了这两种算法的实现过程。
摘要由CSDN通过智能技术生成
package com.atguigu.java;
//二分法查找
//前提:数组必须是有序的
public class ArrayTest3 {
	public static void main(String[] args) {
		int[] arr = new int[] { 1, 3, 4, 5, 7, 9, 44, 556, 778, 9999 };
		int dest = 79;
		int start = 0;
		int end = arr.length - 1;
		boolean isFlag = true;
		while (start < end) {
			int middle = (start + end) / 2;
			if (arr[middle] == dest) {
				System.out.println("找到了:" + middle);
				isFlag = false;
				break;
			} else if (arr[middle] > dest) {
				end = middle - 1;
			} else {
				start = middle + 1;
			}
		}
		if (isFlag) {
			System.out.println("没找到");
		}

	}
}
package com.atguigu.java;

//冒泡排序:
public class BubbleSortTest {
	public static void main(String[] args) {
		int[] arr = new int[] { 3, 34, 0, 8, 99, 54, 5, 999 };
		// 冒泡排序
		// 理解:从最开始的元素开始,两个之间互相比较大小,符合要求就不变,
		// 不符合要求就交换,一直到最后一个,所以第一轮会筛选出整个数组的最大值(降序排列为例)
		// 选出最大值之后,继续进行第二轮,此时我们已经选择出了最大值,现在需要选择第二大的值,
		// 还是从第一个值开始,相邻两个元素继续开始比较,直到选出最大一项,
		// 以数组arr为例,实现冒泡排序:
		for (int i = 0; i < arr.length - 1; i++) {// 共需要比较arr.length -
													// 1轮,最后一个是不用比较的。
			for (int j = 0; j < arr.length - i - 1; j++) {
				if (arr[j] > arr[j + 1]) {
					int temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + "\t");
		}
	}
}
package com.atguigu.java;
import java.util.Arrays;
//Arrarys类:提供了许多方法,都可以在API文档中查找到。
//java.util.Arrarys:操作数组的工具类,定义了很多操作数组的方法。
public class ArraysTest {
	public static void main(String[] args) {
		// boolean equals(int[] a,int[] b);判断两个数组是否相等
		double[] a = new double[] { 1, 2, 2 };
		double[] b = new double[] { 1, 2, 2 };
		boolean result = Arrays.equals(a, b);
		System.out.println(result);

		// String toString(int[] a):输出数组的信息,就不用和之前一样逐个遍历了。
		String result1 = Arrays.toString(a);
		System.out.println(result1);
		
		// void fill(int[] arr,int val);将指定值填充到指定的数组中去。
		int[] arr = new int[] { 33, 14, 3, 4 };
		Arrays.fill(arr, 2);
		System.out.println(Arrays.toString(arr));
		
		// void sort(int[] a);对数组进行排序
		int[] arr1 = new int[] { 33, 14, 3, 4 };
		Arrays.sort(arr1);
		System.out.println(Arrays.toString(arr1));
		
		// int binarySearch(int[] a,int b);//二分法查找
		int result3 = Arrays.binarySearch(arr1, 14);
		System.out.println(result3);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值