1063 sicily (木有准确理解题意,一直wrong error)——不过这事快速排序的一次复习,还是记录一下
2012-01-05 18:28
459 查看
//本博客是本人自己学习、总结的一个场所,不代表正确,请大家查阅的话,务必看清楚说明,以免耽误各位的事情。
#include <iostream> using namespace std; #define E 30000 #define Q 200 typedef struct node{ int id; long s; long long m; }Node; Node arr[E]; int qArr[Q]; void quickSort(int low,int high); int partition(int low,int high); int main() { int nt; cin>>nt; while(nt--) { int p,q; cin>>p>>q; for(int i=0;i<p;i++) { cin>>arr[i].id>>arr[i].s>>arr[i].m; } for(int i=0;i<q;i++) { cin>>qArr[i]; } //对数组进行排序 quickSort(0,p-1); for(int i=0;i<q;i++) { for(int j=0;j<p;j++) { if(arr[j].id==qArr[i]) { if(j==0) { cout<<0<<" "<<p-1<<endl; } else { int k=j-1; for(;k>=0;) { if(arr[j].m>arr[k].m) { k--; } else { break; } } cout<<arr[k].id; k=j+1; for(;k<p;) { if(arr[j].m<arr[k].m) { k++; } else { break; } } cout<<" "<<p-k<<endl; } } } } } return 0; } void quickSort(int low,int high) { int index; if(low<high) { index=partition(low,high); quickSort(low,index-1); quickSort(index+1,high); } } int partition(int low,int high) { Node temp=arr[low]; while(low<high) { while(low<high&&arr[high].s<temp.s) { high--; } if(low<high) { arr[low]=arr[high]; low++; } while(low<high&&arr[low].s>temp.s) { low++; } if(low<high) { arr[high]=arr[low]; high--; } } arr[low]=temp; return low; }
相关文章推荐
- 快速排序【记录一下代码】
- Javascript屏蔽鼠标右键-超简单,不过还是记录一下
- 复习一下简单的排序算法之 快速排序
- 一直分不清选择排序和冒泡排序,网上也好多都是模棱两可的,按自己的理解,总结了个小demo以作记录,希望批评指正
- 记录一下我以前用的java排序和现在用的java排序 虽然效率都不怎么样。。不过够用了
- 数据结构与算法学习记录:快速排序 (转)
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,快速排序
- 国庆开始只切了几道水题,想了想还是记录一下吧
- 互联网盈利模式77种创新 【 很八股的标题,不过内容还是可以参考一下的 】
- 记录一下从懵懂到理解RESTful的过程
- 快速排序的简单应用及回调函数的初步理解
- Maven 连接ORACLE 数据库最后还是没搞定,过程记录一下
- hdu 1011 树dp还是容易理解的,不过在做这个题的时候把一个边界条件给忽略了,以后得注意
- 冒泡,快速,选择排序之理解
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 不过一周还是会去一次烤肉店
- 快速排序--个人思路与书本思路 (复习排序算法)
- 对比快速排序,理解归并排序
- 复习快速排序
- 记录的ID是自动生成好,还是人工赋值好?大家讨论一下。