F简单排序

 它要把所有数都放进队列中,能否进队列看的是队列中队尾也就是最小的元素。

开一个数组,模拟有size个队列,数组中存每个队列最小的元素

插入新元素比数组中所有元素大就size加一,表示新开一个队列,否则二分查找到第一个比他大的位置替换

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a[100000];
    int n;
    int tp,size = 0;
    scanf("%d",&n);
    for(int i =0;i<n;i++)
    {       
        scanf("%d",&tp);
        if(size==0)
        {
            a[0] = tp;
            size++;
        }else{
            int x =lower_bound(a,a+size,tp) - a ;
            if(x==size)a[size++] = tp;
            else a[x] = tp;
        }
    }
    printf("%d\n",size);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41603898/article/details/88601974