/*日期:2011-10-14
作者:xiaosi
题目:一种排序
*/
#include<iostream>
#include<cstdio>
#include<stdlib.h>
using namespace std;
struct Rectangle
{
int num;
int a;
int b;
int l;
int w;
}R[1000];
int cmp( const void *a , const void *b )
{
struct Rectangle *c = (Rectangle *)a;
struct Rectangle *d = (Rectangle *)b;
if(c->a > c->b)
{
c->l=c->a;
c->w=c->b;
}
else
{
c->l=c->b;
c->w=c->a;
}
if(d->a >d->b)
{
d->l=d->a;
d->w=d->b;
}
else
{
d->l=d->b;
d->w=d->a;
}
if(c->num!=d->num)
{
return c->num - d->num;
}
else if(c->l!=d->l)
{
return c->l - d->l;
}
else
{
return c->w - d->w;
}
}
int main()
{
int N;
while(scanf("%d",&N)!=EOF)
{
while(N--)
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %d %d",&R[i].num,&R[i].a,&R[i].b);
}
qsort(R,n,sizeof(R[0]),cmp);
for(i=0;i<n;i++)
{
while((R[i].num==R[i+1].num)&&(R[i].l==R[i+1].l)&&(R[i].w==R[i+1].w))
{
i++;
}
printf("%d %d %d\n",R[i].num,R[i].l,R[i].w);
}
}
}
return 0;
}
分享到:
相关推荐
这里提到的"acm一种排序"很可能是参赛者在ACM在线评测系统上练习的第八题,它要求用C++编程语言实现一种特定的排序算法。 在C++中,有许多经典的排序算法可以实现,如冒泡排序、插入排序、选择排序、快速排序、归并...
标题“一种排序方法”指的是作者提出了一种全新的排序概念,而描述中强调了这种排序方法的创新之处在于其逻辑便利性,并且假设在不考虑内存开销的前提下进行的逻辑推理。作者在描述中提到的“内存问题”和“计算机...
快速排序也叫快排,以动画展示快排的全过程(最快的一种排序),以动画的形式展现排序的逻辑,顺序,效率,一目了然,适合新手理解
为了优化和比较不同排序算法的效率,程序可能还包含了性能分析功能,如计时器来测量每种排序方法所需的时间,或者使用特定的性能指标如比较次数和交换次数。 总结来说,这个项目旨在培养编程者对基本数据结构、文件...
利用随机函数产生30000个随机整数,利用插入排序、起泡排序、选择排序、快速排序、堆排序、归并排序等排序方法进行排序,并统计每一种排序上机所花费的时间.zip
堆排序是一种利用堆这种数据结构所设计的一种排序算法,堆是一种近似完全二叉树的结构,并同时满足堆积的性质。堆排序的基本思想是利用堆这种数据结构来辅助进行排序。具体地说,利用大顶堆(或小顶堆)进行选择排序...
- **原理**: 堆排序是一种利用堆这种数据结构所设计的一种排序算法。堆排序可以看作是选择排序的一种改进版本,其核心思想是将待排序的序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾...
Hoare在1960年提出的一种排序算法。它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序。快速排序...
最后,堆排序是利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。堆排序分为建堆和调整堆两个步骤,最后将堆顶...
堆排序是利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并且满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。堆排序的时间复杂度为O(n log n),但与归并排序不同,...
在实际编程中,快速排序是常用的一种排序算法,尤其在大数据量的场景下,其高效性能使其成为首选。然而,需要注意的是,快速排序是不稳定的排序算法,即相等的元素可能会改变它们原有的相对顺序。如果稳定性是必要的...
三种冒泡排序算法的例子,比较区别与联系!
Hoare在1960年提出的一种排序算法。它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。...
堆排序是一种基于比较的排序算法,利用了堆这种数据结构所设计的一种排序算法。 **时间复杂度**: O(n log n)。 ### 八、拓扑排序 拓扑排序是对有向无环图的顶点的一种排序。 **适用场景**: 主要用于有向无环图。 ...
对于每一种排序算法,Java实现的关键点包括理解算法的核心逻辑、正确使用循环和条件判断,以及有效地管理内存。例如,归并排序的Java实现中,需要使用递归来分割数组,而冒泡排序则需要双层循环。在实际编程中,还...
4. **堆排序**(Heap Sort):利用堆这种数据结构所设计的一种排序算法。它构建一个大顶堆或小顶堆,然后将堆顶元素与末尾元素交换,接着调整堆,重复这个过程,直到所有元素都排好序。堆排序的最坏时间复杂度为O(n ...
10. **基数排序**:主要用于整数排序,根据数字位数从低位到高位分别排序,每位使用上述任何一种排序方法。 这些排序算法各有优缺点,适用于不同的场景。例如,冒泡排序和插入排序简单易懂,但效率较低;快速排序和...
7. 堆排序(Heap Sort):利用堆这种数据结构所设计的一种排序算法,可以利用堆的结构将待排序列进行排序。 8. 归并排序(Merge Sort):将已有序的子序列合并,得到完全有序的序列。 9. 桶排序(Bucket Sort):将...
插入排序是最基本的一种排序算法,它将一个记录插入到已经排序好的有序表中。插入排序有直接插入排序和希尔排序两种,直接插入排序的时间复杂度为 O(n^2),而希尔排序的时间复杂度为 O(nlogn)。希尔排序是一种改进的...