根据结构体的一部分,进行排序,从而对该结构体排序

先附上我写的   不能通过的代码

#include<stdio.h>
#include<algorithm>
using namespace std;
struct arrow
{
    int a,b;
};
bool cmp(arrow a,arrow b)
{
    return a.a<b.a;
}
int main()
{
    arrow jian[555];
    int w,t,n,i,j,m,a,b,c;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(i=0;i<n;i++)
            scanf("%d%d",&jian[i].a,&jian[i].b);
        sort(jian.b,jian.b+n,cmp);
        w=0;
        while(n--)
        {
            i=jian[w].a;
            j=jian[w].b;
            w++;
            while(j--)
            {
                int q;
                printf(">+");
                for(q=0;q<i-2;q++)
                {
                    printf("-");
                }
                printf("+>\n");
            }
            printf("\n");
        }
    }
    return 0;
}

下面附上大神的  代码

#include<cstdio>
#include<algorithm>
#define MAXN 35
using namespace std;

struct S{
    int n, l;
};

bool cmp(S a, S b)
{
    return a.l < b.l;
}

int main()
{
    int t, n;
    S s[MAXN];
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d", &n);
        for (int i = 0; i < n; i++)
            scanf("%d%d", &s[i].l, &s[i].n);
        sort(s, s+n, cmp);
        for (int i = 0; i < n; i++)
        {
            for (int k = 0; k < s[i].n; k++)
            {
                printf(">+");
                for (int j = 0; j < s[i].l - 2; j++)
                    printf("-");
                printf("+>\n");
            }
            printf("\n");
        }
    }
    return 0;
}
时间: 2024-08-05 16:25:13

根据结构体的一部分,进行排序,从而对该结构体排序的相关文章

4.19 使用qsort对结构体数组进行排序,实现对结构的体一级排序和二级排序,进一步了解qsort的原理

qsort对结构体数组进行排序时,可以根据结构体元素中的任意某个成员进行比较之后,如果要交换则会连带结构体中其他成员的一起进行整体的结构体元素交换所以感觉真是万能排序接口 只进行对结构体的一级排序 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct _stu { char name[10]; float score; }Stu; int callBackCompare(con

利用动态排序,对学生结构体的各类信息进行排序

#import <Foundation/Foundation.h> //创建一个学生变量 typedef struct student{ char name[20];  //姓名 int  age;       //年龄 float  weight;  //体重 float  height;  //身高 float  score;   //分数 }Stu; //为什么使用动态排序,动态排序的好处:所有的排序函数if语句之后的比较条件不一样,其余的所有代码都是相同的,把相同的内容放在一个函数里,

Linux中的两个经典宏定义:获取结构体成员地址,根据成员地址获得结构体地址;Linux中双向链表的经典实现。

倘若你查看过Linux Kernel的源码,那么你对 offsetof 和 container_of 这两个宏应该不陌生.这两个宏最初是极客写出的,后来在Linux内核中被推广使用. 1. offsetof 1.1 offsetof介绍 定义:offsetof在linux内核的include/linux/stddef.h中定义.#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 说明:获得结构体(TYPE)的变量成员(

编程题:结构体数组的引用。功能:输出结构体数组各元素的成员值

编程题:结构体数组的引用.功能:输出结构体数组各元素的成员值 #include<stdio.h> void main() { struct person { char name[20]; char sex; int age; float height; }per[3]={{"Li Ping",'M',20,175},{"Wang Ling",'F',19,162.5}, {"Zhao Hui",'M',20,178}}; int i;

用结构体指针指向(-&gt;)或结构体变量加点(.)后不出现结构体成员

今天写代码时遇到这么个问题:用结构体指针指向(->)或结构体变量加点(.)后不出现结构体成员,虽然不影响编写,但效率降低,容易出错. 代码入下: stack.h #ifndef __STACK_H__ #define __STACK_H__ #include<stdlib.h> #include<iostream> using namespace std; #define STACK_DEFAULT_SIZE 10; typedef int ElemType; typedef

SQL SERVER大话存储结构(3)_数据行的行结构

一行数据是如何来存储的呢? 变长列与定长列,NULL与NOT NULL,实际是如何整理存放到 8k的数据页上呢? 对表格进行增减列,修改长度,添加默认值等DDL SQL,对行存储结构又会有怎么样的影响呢? 什么是大对象,什么是行溢出,存储引擎是如何处理它们呢? 如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持! 1 引入 在一个DB内,每一个table都能在sys.sysobjects中找到对应的描述,每一个列,都能从

七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)

 写在前面: 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列.因此排序掌握各种排序算法非常重要.对下面介绍的各个排序,我们假定所有排序的关键字都是整数.对传入函数的参数默认是已经检查好了的.只是简单的描述各个算法并给出了具体实现代码,并未做其他深究探讨. 基础知识: 由于待排序的记录数量不同,使得排序过程中设计的存储器不同,可将排序方法分为两大类:一类是内部排序,指的是待排序记录存放在计算机随机存储器中进行的排序过程.另一类是外部排序,

【排序算法】(1)排序的稳定性

排序的稳定性 2019-11-10  09:42:11  by冲冲 1.稳定性 ① 定义:能保证两个相等的数,经过排序之后,其在序列的前后位置顺序不变.(A1=A2,排序前A1在A2前面,排序后A1还在A2前面) ② 意义:稳定性本质是维持具有相同属性的数据的插入顺序,如果后面需要使用该插入顺序排序,则稳定性排序可以避免这次排序. 比如,公司想根据“能力”和“资历”(以进入公司先后顺序为标准)作为本次提拔的参考,假设A和B能力相当,如果是稳定性排序,则第一次根据“能力”排序之后,就不需要第二次根

常用排序法之一 ——冒泡排序法和选择排序法

语言中,常用的算法有:冒泡排序.快速排序.插入排序.选择排序.希尔排序.堆排序以及归并排序等等.那么从这篇开始,我将分别总结下这几种排序法. 先交代一下,我们将要排序的数组定义为arr[N],即数组arr[]包含N个元素. ## 冒泡排序法(Bubblesort) ## 所谓排序法,就是对一组无序的序列进行有序的排序(从大到小或者从小到大),那么什么叫冒泡排序法,冒泡排序法又是怎么实现数组的有序排列呢. 冒泡排序法的具体实现方法是这样的,从数组的第一个元素`arr[0]`开始,两两比较**(`a

常见排序算法导读(3)[简单选择排序]

这一节将介绍简单选择排序(Simple Selection Sort). 在介绍简单排序算法之前,先给出排序的确切定义,并简单介绍一下排序算法的稳定性. 排序的确切定义 假设含有n个对象的序列为{R[0], R[1], ..., R[n-1]}, 其对应的关键字(key)序列为{K[0], K[1], ..., K[n-1]}. 所谓排序, 就是确定0, 1, ..., n-1的一种排列p[0], p[1], ..., p[n-1], 使各个关键字满足如下的非递减(升序)或非递增(降序)关系: