- 博客(3)
- 收藏
- 关注
原创 2.整数二分
代码中的check()函数是用来判断变量mid位于我们要求的数的左边或者右边,而第二个函数之所以要取mid=l+r+1>>1,就是因为我们在取值是会取一个非整数的下界;如果mid=l+r,当l+r等于奇数时,且l=r-1时,l就会一直等于自己,从而出现死循环。二分,作为基础算法中的一种,我相信大部分人都知道如何去使用,这也不是一个很难的东西,但在整数二分中,我们却常常会在二分后出现死循环的情况,这里就给两个在不同情况下使用的代码,几乎所有的整数二分都可以使用。
2022-09-16 17:58:14 139 1
转载 结构体内嵌比较函数bool operator
直入主题,这个函数主要是用来将数组进行排序的关于内嵌比较函数struct node2 {3 int l,r;4 bool operator <(const node &a)const{5 return r < a.r;6 }7 }a[maxn];这个就可以直接通过比较r的大小进行排序,如果是r<a.r,那就是从小到大排序,反之就是从大到小.顺便提一下,sort函数默认是从小到大排序,而优先队列默认是从大到小排序
2022-05-04 15:23:50 2528
原创 1.快速排序
快速排序,简称快排。如大家所见,当我们要用C语言或者c++等编译语言将一堆数字进行排序的时候,其实并不复杂,我们只需要用两次for就可以将数字排好顺序,但这样排序的时间复杂度,大家应该都知道是n(n^2)的,在一些ac题目中,其实是可能会超时的,比如一道题的范围是0<N<10^9,那么这样排序我们最多要进行10^18次,显然这时肯定会超时的,所以这时候就要用到快排的思想。首先,快排的时间复杂度是o(n)的,比起我们的常规方法,时...
2022-04-06 11:30:22 424
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人