结构体-输出一组数的排名

分析:

利用结构体数组存储每个节点的值、下标、排名。

对值排序,填写排名,再对下标排序,输出

代码如下:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct node{
    int value;
    int index;
    int rank;
};
bool v_cmp(node x,node y)
{
    return x.value<y.value;
}
bool i_cmp(node x,node y)
{
    return x.index<y.index;
}
int main()
{
    node a[100];
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i].value;
        a[i].index=i;
    }
    sort(a,a+n,v_cmp);
    for(int i=0;i<n;i++)
    {
        a[i].rank=i+1;
    }
    sort(a,a+n,i_cmp);
    for(int i=0;i<n;i++)
    {
        cout<<a[i].rank<<" ";
    }
}

运行结果:

原文地址:https://www.cnblogs.com/wanjinliu/p/11397327.html

时间: 2024-10-14 21:34:06

结构体-输出一组数的排名的相关文章

【c语言】输出一组数中有2个出现了1次的数

在之前我们写过了一个函数,写的是在一组数中有一个数只出现了一次,其他书都是出现了2次,这个题思路很简单,直接依次异或就能够找到这个数.详情可以查看我之前的博文. 然后我们来看一下现在这个题. 输出一组数中有2个出现了1次的数.然后其余数出现了2个. 我们这个题的思路大概如下: 1.先异或得到不同数的异或结果 2.找到异或结果中1出现的位数. 3.分组异或,当出现1的位异或,不为1的位异或,可以将原本的数组分为2组,然后依次异或就能够得到2个只出现了一次的数. 大家看看代码就很容易理解了: #in

【C语言】结构体占用字节数及存储与空间分配

我们都知道在数据类型中,char类型占1个字节,short占2个字节,int占4个字节,long占8个字节等等. 在计算结构体大小时需要考虑其内存布局,结构体在内存中存放是按单元存放的,每个单元多大取决于结构体中最大基本类型的大小,下面我们看几个例子: 1. struct A { char a; int b; short c; }str1; 这里char占1个字节,int占4个字节,short占2个字节,按单元存放如下图: 1 2 3 4 a       b b b b c c     由于a占

C/C++ 学习之旅 - 实战2 - 使用Struct结构体输出多类型变量数据

现在的笔者好像变成了这样,我正常了么? 不管正不正常,开始今天的Coding: #include<stdio.h> struct Student{ int ID; char* Name; int Age; };//定义包含学生ID.姓名.年龄三个字段的结构体Student int main(){ struct Student myStudent = {1,"罗帅",20};//实例化结构体并赋值 printf("myStudent实例变量的ID值:%d\n&quo

GDB 格式化结构体输出

转载:http://blog.csdn.net/unix21/article/details/9991925 set print addressset print address on打开地址输出,当程序显示函数信息时,GDB会显出函数的参数地址.系统默认为打开的,show print address查看当前地址显示选项是否打开. set print arrayset print array on打开数组显示,打开后当数组显示时,每个元素占一行,如果不打开的话,每个元素则以逗号分隔.这个选项默认

c语言的结构体字节数统计

struct结构体的字节数 等于 结构体中最大类型的字节数的倍数. 如:?typedef struct Student{??? short id; //2个字节??? char name[15]; //1*15个字节??? int age; //4个字节??? char num; //1个字节} Student; 总共28个字节. c语言的结构体字节数统计

关于结构体占用空间大小总结(#pragma pack的使用)

关于C/C++中结构体变量占用内存大小的问题,之前一直以为把这个问题搞清楚了,今天看到一道题,发现之前的想法完全是错误的.这道题是这样的: 在32位机器上,下面的代码中 class A { public: int i; union U { char buff[13]; int i; }u; void foo(){} typedef char* (*f)(void*); enum{red , green, blue}color; }a; sizeof(a)的值是多少?如果在代码前面加上#pragm

对于结构体中内存对齐的简单说明

结构体内存对齐的原因: 在运行一个结构体时,编译器需要给结构体中的每个变量成员分配内存空间,如这样一个结构体中 typedef struct A { char c1; int i; int j; }A; 对其内存空间分配问题进行分析,如若不进行内存对齐,它的内存空间是: char类型变量c1占1个字节,紧接着int类型变量i与j分别占4个字节,总有9个字节,在访问时,如图1,访问次数较多:在图2中,总有12个字节空间,虽然浪费了c1后的三个字节空间,访问次数却变少,会很大程度上节省了时间,提高了

理解结构体

结构基础知识 在C语言中结构体是一种数据结构.结构体可被声明为变量,指针或者数组等:同时,也是一些元素的集合,这些元素被称为结构体成员,且这些成员可以是不同的类型,成员一般用名字访问 struct Stu   //Stu为结构体标签 {     char name[20];     int age;     charsex[5];     char tele[12];     char addr[30];//成员 }stu1,stu2; //stu1和stu2均为全局的结构体变量, int ma

C的日记-结构体变量和结构体数组

[结构体] 定义结构体的两方式    <1>    struct student{};        struct student a={10001,"云中",'M',"北京"};    <2>    struct student{        }a={10001,"云中",'M',"北京"};定义结构体数组a换成a[],struct student stu[3]={{..},{..},{..}};