C++数据结构及算法实现
文章平均质量分 59
球球球_
这个作者很懒,什么都没留下…
展开
-
三路快速排序
背景增加等于基准点的情况,适用于存在大量相同键值的情况。思路将整个数组分为一个基准点和三个比较部分。比较分为3种情况:大于,小于和等于。指针i没循环一次右移一次,针对三种情况进行不同动作,结束后数组被分为3段,下一次递归只递归小于和大于两部分。5个指针:l:最左侧元素,基准点;r:最右侧元素;lt(less than):最后一个 <v 的元素,起始值(v+1);gt(great than):第一个 >v 的元素,起始值 r;i:正在被比较的元素,起始值..原创 2021-07-18 15:41:52 · 114 阅读 · 0 评论 -
双路快速排序
背景解决单路快速排序所存在的问题,即:在基准值存在大量重复值时,(>=v)部分和(<v)部分分配及其不均衡,算法会退步称为 0(n2) 级别的算法。为了解决这个问题,衍生出双路快速排序:思路整个过程称为Partition从数组中随机选择一点将其作为基准点,并与数组第一个元素交换位置,伺候称其为V点。在数组中设置4个索引:l:数组最左侧元素r:数组最右侧元素i:比较当前元素是否<v,起始点为(l+1)j:比较当前元素是否>v,起.原创 2021-07-18 14:58:46 · 464 阅读 · 0 评论