快排每次寻找都会确定一个元素的真实位置
快排的思想:
先定第一个位置是坑,取出第一个位置的值作为最终要确定位置的值,设置up指针和down指针
由于一开始坑的位置和up重合,直接判断坑的值和down的值大小,此时坑>down需要换坑位置,交换以后down的值付给原来的坑,新坑的位置和down重合,up后移一个
再比较,up<坑,继续后移up一个单位;此时up>坑,需要换坑的位置,此时的up值赋给旧坑,up的位置变成新坑,以此类推。
快排双指针挖坑法,递归代码:
快速实现代码:
结构体的快排实现
自定义快排的比较规则
想多了,根本不需要换成字符然后比较,直接补全成两串数字
优先队列和堆
优先队列有三个参数,其声明形式为:
成员函数
假设type类型为int,则:
bool empty() const
返回值为true,说明队列为空;
int size() const
返回优先队列中元素的数量;
void pop()
删除队列顶部的元素,也即根节点
int top()
返回队列中的顶部元素,但不删除该元素;
void push(int arg)
将元素arg插入到队列之中;
需要注意的是,如果使用和,需要头文件: