冒泡排序通过逐对比较相邻元素并交换,使最大值逐轮“冒”到数组末端,直至整体有序。文中先介绍概念与示例,随后给出基本实现思路:外层遍历轮数,内层比较相邻元素并记录是否发生交换,若一轮无交换则提前结束。随后提供了优化版:在每轮冒泡结束后记录最后一次交换的位置,将其作为下一轮比较的上界,若该位置为0则说明数组已排序,可直接退出。代码分别展示了普通版和优化版的 Java 实现以及运行结果。

二分查找是一种在已排序数组中通过不断取区间中点并与目标值比较,缩小搜索范围直至找到或区间为空的算法。实现时维护左、右边界 L、R,循环计算中点 M = (L+R)>>>1(或 L+((R-L)>>1))避免 (L+R) 产生整数溢出。若 A[M]==target 返回索引;A[M]<target 则 L=M+1;A[M]>target 则 R=M-1;循环结束仍未匹配返回 -1。文中给出 Java 示例,先排序后调用 binarySearch,展示了普通写法和改进后使用无符号右移防止越界并提升效率的实现。

文章介绍了在 Java 中对 List 去重的五种实现方式:① 利用 LinkedHashSet 既去除重复又保持插入顺序;② 使用 Java 8 Stream 的 distinct() 再收集为 List;③ 通过 HashSet 的唯一性特性手动过滤并保留原顺序;④ 遍历 List 并用 contains 判断防止重复添加;⑤ 最原始的双层循环比较并删除重复元素。每种方法的代码示例和基本原理均有说明,可根据性能、可读性和是否需保序等需求选择合适方案。