基础算法学习以及$STL$的使用

2021-05-17 00:29

阅读:388

标签:归并排序   结构体   n+1   quic   ons   span   empty   for   元素   

1.优先队列

(1)大根堆(小顶堆)

priority_queue,greater >q;

(2)小根堆(大顶堆)

priority_queue, less >q;
//或者
priority_queueq;

用法

q.push(x);//入队列

q.pop();//堆顶值

q.back();//队尾值

q.pop();//出队列

q.empty();//返回q是否为空,空则返回1,否则返回0

q.size();//返回q里元素个数

2.排序

(1)快排(STL万岁!\(QwQ\))

sort(a+1,a+n+1);//a数组1~n从小到大排序

(2)结构体排序

//定义
struct node{
int x,y;
};
node a[maxn];
//先从小到大按x值排序,再从大到小按y值排序
bool cmp(node s1,node s2){
if(s1.x!=s2.x)return s1.xs2.y;
}
//主函数内
sort(a+1,a+n+1,cmp);

(3)结构体内重载运算符

struct node
{
    int x,y;
    bool operator 

(4)归并排序

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define _for(i,a,b) for(int i=a;ia[j]){
            t[p++]=a[j++];
            ans+=mid-i+1;        }
        else
        t[p++]=a[i++];
    }
    while(i>n;
    for(int i=1;i>a[i];
    gb(a,1,n);
    cout

(5)手写快排

int a[101];

void hand_write_quick_sort(int l,int r)
{
    if(l>=r) return;
    else
    {
        int i=l;
        int j=r;
        int top=a[i];
        //a[i]即为我们选择的“点”,用于分割
       //(我们用的是这个点的值,而不是位置。)
        while(i= v) j--;
        if (i  i) return get(i+1, r, k);
    else return v; 
}

基础算法学习以及$STL$的使用

标签:归并排序   结构体   n+1   quic   ons   span   empty   for   元素   

原文地址:https://www.cnblogs.com/sqrthyy/p/9747857.html


评论


亲,登录后才可以留言!