冒泡排序通过重复比较相邻元素并在逆序时交换,使最大(或最小)元素逐轮“冒泡”到数组末端,直至整体有序。基本实现包括外层循环控制轮次,内层循环比较相邻元素并记录是否发生交换,以便在无交换时提前结束。文中给出 Java 简单版代码示例,指出循环变量错误并演示每轮结果输出。随后介绍优化思路:记录本轮最后一次交换的位置作为下一轮比较上限,若本轮未发生交换则直接终止。优化版代码利用该“last”索引显著减少不必要比较,展示了逐轮排序后的数组变化。

二分查找是一种在有序数组中定位目标值的算法。通过维护左、右边界 L、R,取中间索引 M = (L+R)/2(或使用无符号右移避免溢出),比较 A[M] 与目标 T:相等则返回索引;小于 T 时左边界设为 M+1;大于 T 时右边界设为 M-1,循环直至 L>R 表示未找到。示例代码先对数组排序,再在 while 循环中实现上述逻辑,返回找到的下标或 -1。文中指出当 R 接近 Integer.MAX_VALUE 时 (L+R)/2 可能溢出,提供两种改进:使用 L/2+R/2 的等价写法或位运算 M = (L+R) >>> 1,以确保安全且提升效率。

文章介绍了在 Java 中对 List 去重的五种实现方式:①利用 LinkedHashSet 既去除重复又保持插入顺序;②使用 Java 8 Stream 的 distinct() 再收集为 List;③借助 HashSet 的唯一性手动构建有序结果;④遍历 List 并通过 contains 判断防止重复插入;⑤通过双层 for 循环比较并删除相同元素。每种方法的代码示例和运行结果均已给出,帮助读者根据需求选择合适的去重方案。