首页 > 其他分享 >c: struct sort descending and ascending

c: struct sort descending and ascending

时间:2023-11-05 15:55:35浏览次数:40  
标签:sort Hero struct her int brief param descending

 

/**
 * @file hello.c
 * @author your name (geovindu)
 * @brief 
 * @ide vscode c11,c17 windows 10
 * @version 0.1
 * @date 2023-11-05
 * 
 * @copyright Copyright (c) 2023
 * 
 */

#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>

struct num1
{
    char a; //1
    char b; //2
    double c; //8
    short d; 
};

struct num2
{
    char a; //1
    double b;//2
    char c;
    int d;

};

/**
 * @brief 学生
 * 
 */
struct Student
{
    /**
     * @brief 姓名
     * 
     */
    char name[20];
    /**
     * @brief 年龄
     * 
     */
    int age;
    /**
     * @brief 成绩
     * 
     */
    int score;
};

/**
 * @brief 英雄
 * 
 */
struct Hero
{
    /**
     * @brief 姓名
     * 
     */
    char name[20];
    /**
     * @brief 年龄
     * 
     */
    int age;
    /**
     * @brief 性别
     * 
     */
    char sex[2];
};

/**
 * @brief 升序排序
 * 
 * @param a 
 * @param b 
 * @return int 
 */
int cmp(const void *a,const void *b){

    struct Hero c=*(struct Hero*)a;
    struct Hero d=*(struct Hero*)b;
    //按升序排序
    return c.age-d.age;
}



/**
 * @brief 升降
 * 
 * @param her 
 * @param n 
 */
void SortBubble(struct Hero her[10],int n)
 {
    	
    	for(int i=0;i<n;i++)
    	{
    		for(int j=0;j<n-1;j++)
    		{
    			if(her[j].age>her[j+1].age)
    				cmp(&her[j],&her[j+1]);
    		}
    	}
 }

/**
 * @brief 比较
 * 
 * @param px 
 * @param py 
 */
void swap(struct Hero *px, struct Hero *py) // Definition of Swap function
{
  struct Hero temp;
  temp = *px;
  *px = *py;
  *py = temp;
}

/**
 * @brief 升序
 * 
 * @param her 
 * @param n 
 */
void SortBubbleAsc(struct Hero her[10],int n)
 {
    	int i,j;
        struct Hero temp;
    	for(int i=0;i<n-1;i++)
    	{
    		for(int j=0;j<n-i-1;j++)
    		{
    			if(her[j].age>her[j+1].age)
    				swap(&her[j],&her[j+1]);
                    //temp=her[j];
                   // her[j]=her[j+1];
                   // her[j+1]=temp;
    		}
    	}
 }

/**
 * @brief 降序
 * 
 * @param her 
 * @param n 
 */
void SortBubbleDesc(struct Hero her[10],int n)
 {
    	int i,j;
        struct Hero temp;
    	for(int i=0;i<n-1;i++)
    	{
    		for(int j=0;j<n-i-1;j++)
    		{
    			if(her[j].age<her[j+1].age)
    				swap(&her[j],&her[j+1]);

    		}
    	}
 }
  /**
   * @brief 
   * 
   * @param her 
   * @param n 
   */
   void PrintList(struct Hero her[],int n)
    {
    	for(int i=0;i<n;i++)
    	{
    		printf("信息:%s \t %d\t %s$\n",her[i].name,her[i].age,her[i].sex);
    	}
    }

int main()
{

    puts("hello c language world!涂聚文\t");
    printf("涂聚文");
    struct Student stu={"张三",18,100};

    struct Student *p=&stu;
    p->score=80;
    printf("姓名%s 年龄%d 成绩%d \n",p->name,p->age,p->score);
    printf("输入英雄:\n");
    printf("姓名\t 年龄 \t 性别:\n");
    int n;
    struct Hero sz[100];
    n=5;
    for(int i=0;i<n;i++){
        scanf("%s %d %s",&sz[i].name,&sz[i].age,&sz[i].sex);
    }

    /*
    qsort函数参数:
   
    */
    //1
    //qsort(sz,n,sizeof(sz[0]),cmp);
    //2
    //SortBubble(sz,5);
    //3 
    //SortBubbleDesc(sz,5);
    //4
    SortBubbleAsc(sz,5);
    //qsort(sz,n,sizeof(sz[0]),cmpSort);
    printf("\n按年龄升序为:\n\n");
    printf("姓名\t 年龄 \t 性别:\n");
    for(int i=0;i<n;i++){
        printf("%s\t %s \t%d \n",sz[i].name,sz[i].sex,sz[i].age);
    }


    struct num1 n1;
    struct num2 n2;
    printf("sizeof(n1)=%d,sizeof(n2)%d\n",sizeof(n1),sizeof(n2));


    system("pause");
    return 0;
}

  

标签:sort,Hero,struct,her,int,brief,param,descending
From: https://www.cnblogs.com/geovindu/p/17810597.html

相关文章

  • extern "C" __attribute__((constructor))
    extern"C":这是C++中的语法,用于指定一个函数或变量应该按照C语言的约定进行编译和链接。在C++中,函数和变量的名称会根据其作用域和命名空间进行修饰,而这会导致无法和C语言中的函数和变量进行正确的链接。使用 extern"C" 可以避免这个问题,确保这个函数或变量的名称不会......
  • qt---主进程加载一个子进程的方法以及其中遇到“Calling a private constructor of cl
    .proQT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsCONFIG+=c++17#YoucanmakeyourcodefailtocompileifitusesdeprecatedAPIs.#Inordertodoso,uncommentthefollowingline.#DEFINES+=QT_DISABLE_DEPRECATED_BEFORE=0......
  • Educational Codeforces Round 157 (Rated for Div. 2) D. XOR Construction
    题目链接题意给你\(n-1\)个整数\(a_1,a_2,\dots,a_{n-1}\)。你的任务是构造一个数组\(b_1,b_2,\dots,b_n\),使得:从\(0\)到\(n-1\)的每个整数都在\(b\)中出现一次;对于从\(1\)到\(n-1\)的每个\(i\),\(b_i\oplusb_{i+1}=a_i\)(其中\(\oplus\)表示......
  • datastructure杂记
    线段树线段树合并&&分裂可持久化线段树线段树分治Seg—beats兔队线段树历史最值&&历史版本和Q:维护一种数据结构,支持对数列\(\{a\},\{b\}\)的如下操作对\(\{a\}\)区间加,之后令\(b_i\leftarrow\max(b_i,a_i)\)历史最大值,求\(\max(b_{l\cdotsr})\)采用打标记的方......
  • Insertion Sort
    想象一下,冒泡排序交换的两个数一定是原数组的逆序对(反证容易证明:如果不是逆序对,相遇之后不会交换。两个数只有在相遇的时候才会使得下标相对大小互换,相遇之前一定是左的在左,右的在右。而不是逆序对的话,相遇的时候也不会交换,所以就一直不会交换)。因为有序数组一定没有逆序对,所以逆......
  • Unity DOTS系列之Struct Change核心机制分析
    最近DOTS发布了正式的版本,我们来分享一下DOTS里面StructChange机制,方便大家上手学习掌握UnityDOTS开发。基于ArchType与Chunk的Entity管理机制  我们回顾以下ECS的内存管理核心机制,基于ArchType+Chunk的Entity管理模式。每个Entity不直接存放数据,数据全部存放到Component......
  • CF1872E Data Structures Fan 题解
    CF1872E翻译请把数据加强到\(\sumn\leq10^8\)后重新思考。我们维护全局中被标记的所有点的异或和。发现对于一次\(1\)操作,相当于让答案异或上区间的\(a_i\)异或和,因为这会让被标记的点变成没被标记的,而没被标记的点会产生贡献。查询的话直接查询即可复杂度......
  • 无涯教程-C语言 - 结构(Struct)
    数组允许定义变量的类型,这些变量可以容纳相同种类的多个数据项。同样,结构是C中可用的另一种用户定义的数据类型,它允许组合不同种类的数据项。结构Struct用于表示记录,假设您想定义图书馆中的书籍,您可能需要定义跟踪有关每本书的以下属性-标题title作者author主题subject图......
  • @PostConstruct注解
    @PostConstruct注解,使用在方法上,它可以被用来标注一个非静态的void方法,这个方法会在该类被Spring容器初始化后被执行,实现数据初始化的操作。注:@PostConstruct只能用在方法上面,而不能用在属性或构造函数上。一个类中可以有多个使用@PostConstruct注解的方法,但执行顺序并......
  • 使用Lombok@Builder、@Data(没有生成无参构造方法)这个坑要注意,使用@Builder时配合@NoAr
    使用Lombok@Builder、@Data(没有生成无参构造方法)这个坑要注意,,使用@Builder时配合@NoArgsConstructor和@AllArgsConstructor一起使用Lombok为我们开发带来了极大便利,特别是在想要使用建造者模式的时候只需要在类上加@Builder注解即可。但是不小心也会引发隐藏的bug。我们来看......