java 二分法查找案例与数组排序案例.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
### Java 二分法查找与数组排序案例分析 #### 数组排序案例 在Java中,对数组进行排序是一项常见的操作,通常我们有两种排序方式:升序(从小到大)和降序(从大到小)。下面我们将分别介绍这两种排序方法的具体实现。 ##### 升序排序案例 ```java public class ArrayTest { private static int[] arrayAesc; public static void main(String[] args) { ArrayTest a = new ArrayTest(); arrayAesc = new int[]{5, 2, 1, 4, 6, 3}; arrayAesc = a.sortArrayAesc(arrayAesc); for (int i = 0; i < arrayAesc.length; i++) { System.out.println(arrayAesc[i]); } System.out.println("success"); } public int[] sortArrayAesc(int[] temps) { for (int i = 0; i < temps.length; i++) { for (int j = i + 1; j < temps.length; j++) { if (temps[i] > temps[j]) { int temp = temps[i]; temps[i] = temps[j]; temps[j] = temp; } } } return temps; } } ``` **知识点解析**: 1. **冒泡排序原理**:这段代码实现的是典型的冒泡排序算法,通过两层循环来比较相邻元素,并根据条件交换它们的位置。 2. **局部变量与实例变量**:`arrayAesc` 是类 `ArrayTest` 的静态成员变量,而 `temps` 是方法 `sortArrayAesc` 的局部变量。 3. **数组初始化与遍历**:数组 `arrayAesc` 在主方法中被初始化为 `{5, 2, 1, 4, 6, 3}`。排序后,通过循环打印每个元素验证结果。 ##### 降序排序案例 ```java public class ArrayTest { private static int[] arrayAesc; public static void main(String[] args) { ArrayTest a = new ArrayTest(); arrayAesc = new int[]{5, 2, 1, 4, 6, 3}; arrayAesc = a.sortArrayDesc(arrayAesc); for (int i = 0; i < arrayAesc.length; i++) { System.out.println(arrayAesc[i]); } System.out.println("success"); } public int[] sortArrayDesc(int[] temps) { for (int i = 0; i < temps.length; i++) { for (int j = i + 1; j < temps.length; j++) { if (temps[i] < temps[j]) { int temp = temps[i]; temps[i] = temps[j]; temps[j] = temp; } } } return temps; } } ``` **知识点解析**: 1. **冒泡排序变体**:与升序排序类似,这里的代码也采用了冒泡排序的思想,但交换条件相反,实现了降序排列。 2. **循环控制结构**:外层循环用于控制排序轮次,内层循环用于具体比较并交换元素位置。 #### 二分法查找案例 ```java public class TestMiddle { private final static int target = 1; private static int findData(int dataset[]) { int dataLength = dataset.length; if (dataset[0] > target || dataset[dataLength - 1] < target) { System.out.println("不存在你想要找的数据"); return -1; } int midIndex = dataLength / 2; int[] temp; int midData = dataset[midIndex]; if (midData == target) { System.out.println("数据已经找到了!" + midData); return midData; } if (midData > target) { temp = new int[midIndex]; for (int i = 0; i < midIndex; i++) { temp[i] = dataset[i]; } return findData(temp); } if (midData < target) { int afterIndex = midIndex; if (dataLength % 2 == 0) { temp = new int[midIndex - 1]; for (int i = 0; i < midIndex - 1; i++) { afterIndex = afterIndex + 1; temp[i] = dataset[afterIndex]; } } else { temp = new int[midIndex]; for (int i = 0; i < midIndex; i++) { // 这里应该继续完成循环 } } return findData(temp); } return -1; } } ``` **知识点解析**: 1. **递归与循环选择**:该案例采用递归来实现二分查找算法。递归方法能够清晰地表达问题的解决思路,但在某些情况下可能不如循环更高效。 2. **数组边界检查**:首先检查目标值是否在数组范围内,这是为了防止不必要的计算。 3. **递归终止条件**:当找到目标值时返回其索引,或者当搜索区间为空时返回 `-1` 表示未找到。 4. **中间值的选择**:通过计算数组长度的一半来确定中间值。需要注意的是,当数组长度为偶数时,中间值的选择可能会有所不同。 以上是关于Java中数组排序及二分法查找的案例分析。这些知识点不仅适用于本案例,也是Java编程中非常基础且重要的部分。掌握这些知识有助于编写更加高效、简洁的代码。
- 粉丝: 97
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 操作系统实验ucore lab3
- DG储能选址定容模型matlab 程序采用改进粒子群算法,考虑时序性得到分布式和储能的选址定容模型,程序运行可靠 这段程序是一个改进的粒子群算法,主要用于解决电力系统中的优化问题 下面我将对程序进行详
- final_work_job1(1).sql
- 区块链与联邦学习结合:FedChain项目详细复现指南
- 西门子S7 和 S7 Plus 协议开发示例
- 模块化多电平变流器 MMC 的VSG控制 同步发电机控制 MATLAB–Simulink仿真模型 5电平三相MMC,采用VSG控制 受端接可编辑三相交流源,直流侧接无穷大电源提供调频能量 设置频率
- 微电网(两台)主从控制孤岛-并网平滑切的分析 分析了: 1.孤岛下VF控制 2.并网下PQ控制 3.孤岛下主从控制 4.孤岛到并网的平滑切控制 5.除模型外还对分布式发电与主动配电网一些常见问题做了
- 第四组二手产品.zip
- 基于小程序的智慧物业平台源代码(java+小程序+mysql+LW).zip
- MVIMG_20241222_194113.jpg