非常简单的实现没有什么好讲的,主要是链表的插入具有易实现的特点,才弄出的这玩意儿,效率一般...
本来估摸复杂度为O(nlogn),但似乎用stl后更高?
代码:
//#pragma GCC optimize()//手动Ox优化
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+1;
vector<int>s;
int siz;
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i){
int x;
scanf("%d",&x);
int l=0,r=siz-1,ans=-1;
while(l<=r){
int mid=(l+r)>>1;
if(s[mid]<=x){
ans=mid;
l=mid+1;
continue;
}
r=mid-1;
}
s.insert(s.begin()+ans+1,x);
siz++;
}
for(int i=0;i<siz;++i){
printf("%d ",s[i]);
}
return 0;
}
/**
* ┏┓ ┏┓+ +
* ┏┛┻━━━┛┻┓ + +
* ┃ ┃
* ┃ ━ ┃ ++ + + +
* ████━████+
* ◥██◤ ◥██◤ +
* ┃ ┻ ┃
* ┃ ┃ + +
* ┗━┓ ┏━┛
* ┃ ┃ + + + +Code is far away from
* ┃ ┃ + bug with the animal protecting
* ┃ ┗━━━┓ 神兽保佑,代码无bug
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛ + + + +
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛+ + + +
*/