摘要: 14.5:真正意义上的快排:随机快排 [ ....?... X] 随机从数组中选一个数和最右侧的数进行交换, [ ....X... ?] 拿这个?数作为目标数 将数组划分成: [ <? ==? >? ?] 只需要将最后?和>?区域的第一数交换,?就来到了==?区域 [ <? ==? ? >? ] 此 阅读全文
posted @ 2022-05-22 12:03 yzmarcus 阅读(41) 评论(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 阅读(25) 评论(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 阅读(31) 评论(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 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 14:快排 前置知识:荷兰国旗问题 比较: 快排1.0 快排2.0 和随机快排 阅读全文
posted @ 2022-05-22 10:19 yzmarcus 阅读(19) 评论(0) 推荐(0) 编辑