摘要: 14.6:排序总结 1、不基于比较的排序,对样本数据有严格的要求,不易改写。 2、基于比较的排序,只要规定好两个样本怎么比大小就可以直接复用。 3、基于比较的排序,时间复杂度的极限是O(N * logN)。 4、时间复杂度O(N * logN)、额外空间复杂度低于O(N)、且稳定的基于比较的排序是不 阅读全文
posted @ 2022-05-23 08:29 yzmarcus 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 14.5:真正意义上的快排:随机快排 [ ....?... X] 随机从数组中选一个数和最右侧的数进行交换, [ ....X... ?] 拿这个?数作为目标数 将数组划分成: [ <? ==? >? ?] 只需要将最后?和>?区域的第一数交换,?就来到了==?区域 [ <? ==? ? >? ] 此 阅读全文
posted @ 2022-05-22 12:03 yzmarcus 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 14.4:快排2.0 [ ..... X] 利用数组的最后一个数X作为目标数 将数组划分成: [ <X ==X >X X] 只需要将最后X和>X区域的第一数交换,X就来到了==X区域 [ <X ==X X >X ] 此时==X的位置固定下来,不用变了。 通过递归: 处理[ <x ]区域 处理[ >x 阅读全文
posted @ 2022-05-22 11:54 yzmarcus 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 14.3:快排1.0 [ ..... X] 利用数组的最后一个数X作为目标数 将数组划分成: [ <=X >X X] 只需要将最后X和>X区域的第一数交换,X就来到了==X区域 [ <=X X >X ] 此时X的位置固定下来。 通过递归: 处理[ <=x ]区域 处理[ >x ]区域 阅读全文
posted @ 2022-05-22 11:20 yzmarcus 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 14.2:荷兰国旗问题:分3区域 分3区域、<X 放左边,X放中间, >X放右边 例子: <)[ 3, 4, 6, 0, 7, 4, 5, 1, 3 ](> 目标数:4 1、当前数 < 目标数,当前数和小于区的下一个数交换,小于区右括,当前数跳下一个。 2、当前数 == 目标数,当前数直接跳下一个。 阅读全文
posted @ 2022-05-22 11:09 yzmarcus 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 14.1:荷兰国旗问题:分2区域 有数组arr[ L ...R ],给你一个数X, 拿X去划分数组 1:分2区域、<=X 放左边, >X放右边 2:分3区域、<X 放左边,X放中间, >X放右边 再划分后的区域内,不要求一定有序。 要求不用辅助数组,时间复杂度O(N) 1、当前数<=目标,当前数和( 阅读全文
posted @ 2022-05-22 10:23 yzmarcus 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 14:快排 前置知识:荷兰国旗问题 比较: 快排1.0 快排2.0 和随机快排 阅读全文
posted @ 2022-05-22 10:19 yzmarcus 阅读(16) 评论(0) 推荐(0) 编辑
摘要: https://leetcode-cn.com/problems/count-of-range-sum/ 套例子: 0 1 2 3 arr[ 1, -1, -2, 3] 范围[ -1, 1 ] 暴力解法: 0-0 [ 1 ] 累加和1 符合范围 √ 0-1[1,-1] 累加和0 符合范围 √ 0-2 阅读全文
posted @ 2022-05-21 10:21 yzmarcus 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 前置知识:前缀累加和 arr[ i ....j ] 求sum[ i, j ]的和 等价于 sum[ i, j ] = preSum[ 0, j ] - preSum[ 0, i-1 ] 前缀和的生成: index 0 1 2 3 4 5 6 arr [-3, 1, 2, 4, 0, -1, 5] 遍 阅读全文
posted @ 2022-05-21 09:17 yzmarcus 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 13.6 : 加强堆,通过改写经典堆的底层代码 阅读全文
posted @ 2022-05-17 16:47 yzmarcus 阅读(11) 评论(0) 推荐(0) 编辑