sort小芝士
我不会使用sort。你信吗。
关于sort,最常见的用法就是拿来排序。而用来排序时它一般会带两个或三个参数,分别是排序区间首地址,排序区间尾地址,以及一个可有可无的cmp函数。
问题在于,首地址和尾地址怎么计算?
众所周知数组名本质上是一个指针,指向数组第一个元素的位置。什么意思呢,这句话就是说对于一个数组a,总是会有a==&a[0]
。
现在就可以发现假如要对[l,r]的元素进行排序,那么我们需要写的就是sort(a+l,a+r+1);
。
这不是废话吗。
主要是今天傍晚调某道cdq做四维偏序的题时调了两个小时都没有调出来,输出后发现sort函数没起作用……
结果是写成了sort(a+l+1,a+r+1);
。我愣是没有发现。果然是思维定式。
我的两个小时啊啊啊啊。
愿后世引以为戒。
一如既往,万事胜意