- 博客(48)
- 收藏
- 关注
原创 快速选择算法
本文介绍了快速选择算法及其在解决"数组中第K个最大元素"和"最小K个数"问题中的应用。核心是通过三路划分将数组分为小于、等于和大于基准值的三个区域,再根据K值所在区间递归处理部分数组,实现O(n)时间复杂度。文章详细讲解了算法实现步骤,包括基准值选择、三指针划分策略以及递归终止条件,并提供了完整代码示例。该算法相比冒泡排序等传统方法更高效,特别适用于需要快速定位特定排名元素的场景。
2025-12-10 17:19:14
776
2
原创 高效IO的理解
本文介绍了高效IO替代Scanner的使用场景及实现方法。通过对比分析指出,Scanner在小规模调试时简单易用,但在大数据量输入时性能较差,而高效IO(BufferedReader)能提升10倍以上性能。给出了包含Read类和main类的完整代码实现,详细解析了StringTokenizer分割字符串和BufferedReader缓冲读取的原理。重点讲解了next()方法的工作流程,以及nextInt()、nextLine()等方法的具体实现。最后通过输入案例的执行流程图解,展示了方法调用顺序和数据处理过
2025-09-28 15:12:02
667
23
原创 常见位运算总结
本文介绍了位运算的基本操作,包括四种位运算符(&、|、~、^)和三种移位运算符(<<、>>、>>>)。详细讲解了按位与、或、取反、异或的运算规则,以及左移、右移、无符号右移的实现原理。同时提供了5个典型例题及解法:1)判断某二进制位是0/1;2)将某位改为1;3)将某位改为0;4)提取最右侧的1;5)将最右侧1改为0。强调位运算代码虽简洁但逻辑复杂,需要多加练习掌握。建议使用括号明确运算优先级。
2025-09-23 14:36:35
864
26
原创 MYSQL数据库约束
数据库约束时关系型数据库的一个重要功能。主要的目的是保证数据的完整性,也可是为数据的正确性(数据本身是否正确,关联关系是否真确)。
2024-11-27 16:27:36
790
31
原创 MYSQL表的增删改查(下)
首先我们可以先看一下哪三位同学的总成绩为倒数前三,为了方便比较,这里把总分为null的给省略了,故只查询到10行。注意:update操作时,如果不加where条件,修改的将是整张表的所有记录,是非常危险的操作。例如,还是上面的exam表,要把 孙悟空同学的成绩删去,按照习惯,我们先把表全列查询一下,从结果可以看到,查询的行数从11行变成了9行,并且删除后的表中没有孙悟空同学。这里其实和前面的多列查询有些相似,是把set后面的一个语句换成多个。例如,把宋公明的语文成绩改为60,数学成绩改为77。
2024-11-26 21:15:09
1709
18
原创 MYSQL 表的增删改查(上)
现在将student表换为 exam表,对exam表进行全列查询,这个表可以自己创建一份,然后通过新增数据来实现。可以看到,其中有11行,并且其中有两个98和80,这时候我们可以通过去重查询去除其中一个98和80。11行,因为查询的id列并没有重复的内容,只有math里面有重复内容是无法进行去重的。我们可以通过 指定查询的列 来实现指定列查询,实际上就是把 * 换成想要查询的列。像student表中,就有id,name两列,那么我们可以选择只插入其中一列。可以看到这次查询的结果是有9行,并且没有重复的数。
2024-11-26 09:16:32
1565
13
原创 Java:插入排序
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳 定的;直接插入排序是稳定的,由上面图片能看到它是具有稳定性的,但如果是代码部分的 arr[j] > tmp 改为:arr[j] >= tmp,以上面的2a和2b为例,它们的顺序就会发生变化。所谓的排序,就是使一串记录,按照某个或某些关键字的大小,递增或递减的排列起来的操作。
2024-09-28 15:39:21
4617
67
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅