qsort 与 sort

学术版

6,代码我看看
by 引领天下 @ 2017-05-26 17:25:22


```cpp sort() 6A4T #include<iostream> #include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<algorithm> #include<sstream> #include<queue> using namespace std; int N,R,Q; struct LZL{ int c,s,w; }X[200005]; int cmp(LZL a,LZL b) { if(a.s<b.s) return 0; if(a.s>b.s) return 1; if(a.c<b.c) return 1; return 0; } int main() { scanf("%d%d%d",&N,&R,&Q); N*=2; for(int i=1;i<=N;i++) scanf("%d",&X[i].s),X[i].c=i; for(int i=1;i<=N;i++) scanf("%d",&X[i].w); while(R--){ sort(X+1,X+1+N,cmp); /*for(int i=1;i<=N;i++){ cout<<"("<<X[i].c<<"-"<<X[i].s<<") "; }*/ for(int i=1;i<=N;i+=2){ if(X[i].w>X[i+1].w) X[i].s++; else X[i+1].s++; } //puts(""); } sort(X+1,X+1+N,cmp); printf("%d\n",X[Q].c); return 0; } ```
by Thecats @ 2017-05-27 11:57:00


吃个饭qwqwq
by Thecats @ 2017-05-27 11:57:15


```cpp qsort() 8A2T #include<iostream> #include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<algorithm> #include<sstream> #include<queue> using namespace std; int N,R,Q; struct LZL{ int c,s,w; }X[200005]; int cmp(const void *a,const void *b) { if((*(LZL *)a).s<(*(LZL *)b).s) return 1; if((*(LZL *)a).s>(*(LZL *)b).s) return -1; if((*(LZL *)a).c<(*(LZL *)b).c) return -1; return 1; } int main() { scanf("%d%d%d",&N,&R,&Q); N*=2; for(int i=1;i<=N;i++) scanf("%d",&X[i].s),X[i].c=i; for(int i=1;i<=N;i++) scanf("%d",&X[i].w); while(R--){ qsort(X+1,N,sizeof(X[0]),cmp); /*for(int i=1;i<=N;i++){ cout<<"("<<X[i].c<<"-"<<X[i].s<<") "; }*/ for(int i=1;i<=N;i+=2){ if(X[i].w>X[i+1].w) X[i].s++; else X[i+1].s++; } //puts(""); } qsort(X+1,N,sizeof(X[0]),cmp); printf("%d\n",X[Q].c); return 0; } ```
by Thecats @ 2017-05-27 23:02:36


@[引领天下](/space/show?uid=39863) w
by Thecats @ 2017-05-27 23:03:08


@[Thecats](/space/show?uid=20316) #***尴尬*** sort不是只用bool吗…… 是不是跟cmp函数类型有关系 还有你如果想这样A的话加个读入优化试试 代码: ```cpp int read(){ char c=getchar(); int x=0; while (c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); return x; } ``` 然后你qsort的cmp有返回值-1是怎么会是? 是不是这句加快了排序速度? 你把改到sort里试试
by 引领天下 @ 2017-05-28 07:17:27


sort用bool int都可以 qsort排序规则是<0放前面 >0放后面w
by Thecats @ 2017-05-28 12:56:07


二者算法不同。qsort是快速排序,sort是内省排序(快速排序递归一定深度后转堆排序)。对于没有卡qsort的序列,qsort的常数确实小一些。
by CommonAnts @ 2017-06-12 15:24:01


@[CommonAnts](/space/show?uid=40607) 好的呢谢谢w 所以其实用哪个习惯就好了是喵?
by Thecats @ 2018-04-13 07:33:33


|