c++ sort函数对数组的使用


易错知识点:
1.sort函数的一般没有声明第三部分也就是cmp函数的话是从小到大排序,声明cmp之后,他会按照对应的cmp规则进行排序比如

int cmp(int x, int t)
{
  return x > y;
}
上面的x, y也看也可以是结构体

上面的代码是按照从大到小的顺序排列, 因为只有x > y才会返回true


2.排序区间,sort函数一般是(start, end, cmp)类似这样的使用方法,st,ed是排序区间,但是他这个区间是左闭右开的,
比如sort(a + 2, a + 6)的话就是从a的第三个元素开始,排序到a的第6个元素,也就是从a[2]排序到a[5]! ! !

3.库函数
因为sort函数是默认从小到大排序的(less ()),
使用greater ()从大到小排序:

sort(a, a + n, greater<int>());

如果在优先队列priority_queue中使用greater 那么就是小根堆,反之是大根堆
小根堆:

priority_queue<int, vector<int>, greater<int>> heap;
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 10010;
int a[N];
int cmp(int x, int y)
{
    return x > y;
}
int main()
{
   int n, m;
   cin >> n >> m;
   for(int i = 0; i < n; i ++ )
       a[i] = i + 1;
  while(m --)
  {
      int q, p;
      cin >> p >> q;
      if(p == 0)
            sort(a, a + q, cmp);
        else
            sort(a + q - 1, a + n);
  }
  for(int i = 0; i < n; i ++)cout << a[i] << ' ';
   return 0;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM