• c语言中的结构体按元素大小进行冒泡排序


    #include<stdio.h>
    struct student
    {
        char name[16];//name
        unsigned char age;//年龄
        unsigned char score;//成绩
        char classes[100];//班级
    };
    void swap(struct student st[] ,int length) {  //这个地方可以写成struct student *st; 其实可以将结构体当成为数组进行操作
        struct student tmp;
        int i, j;
        for (j = 0 ; j < length; j++) {
            for ( i = 1; i < length - j; i++)
            {
                if (st[i].age < st[i - 1].age)
                {
                    tmp = st[i];
                    st[i] = st[i - 1];
                    st[i - 1] = tmp;
                }
            }
        }
    }
    int main() {
        struct student st[5]=
        {
            {"周永康",70,59,"C++基础班"},{"徐才厚",60,30,"JAVA班"},{"薄熙来",72,90,"PHP班"},{"令计划",50,32,"平面设计"},{"金三胖",30,78,"IOS系统"}
        };
    
        int length = 5;
    
        swap(st,length);
    
        for (int i = 0; i < length; i++)
        {
            printf("姓名%s,年龄 = %d,成绩 = %d,班级 = %s
    ",st[i].name,st[i].age ,st[i].score,st[i].classes);
        }
        return 0;
    }

    第二种方法

    #include<stdio.h>
    struct student
    {
     char name[16];//name
     unsigned char age;//年龄
     unsigned char score;//成绩
     char classes[100];//班级
    };
    
    void swap(struct student* a, struct student* b) {
     struct student tmp;
     *a = *b;
     *b = tmp;
    }
    
    int main() {
     struct student st[5] =
     {
      {"周永康",70,59,"C++基础班"},{"徐才厚",60,30,"JAVA班"},{"薄熙来",72,90,"PHP班"},{"令计划",50,32,"平面设计"},{"金三胖",30,78,"IOS"}
     };
    
     int length = 5;
     struct student tmp = st[0];
     st[0] = st[1];
     st[1] = tmp;
     int i, j;
     for (i = 0; i < length; i++)
     {
      for (j = 1; j < length - i; j++)
      {
       if (st[j].age < st[j - 1].age)
       {
        swap(&st[j], &st[j - 1]);
       }
      }
     }
    
     for (int i = 0; i < length; i++)
     {
      printf("姓名%s,年龄 = %d,成绩 = %d,班级 = %s
    ", st[i].name, st[i].age, st[i].score, st[i].classes);
     }
     return 0;
    }

    这两种方法中,都用到的方法是将整个结构体看成是一个元素,就像是一个int型变量那样。通过比较了之后,然后再进行元素之间的交换。可以直接进行值之间的传递。相当于下面的这个类型变化的代码。在这上面的两个代码中,我提倡第二个代码,这个代码中

    将交换的部分进行抽取了出来,这样有助于后面的使用,在后面的部分如果成绩相当,我们可以按照年龄进行排序,这个交换的部分我们可以直接进行调用swap这个函数就可以了。

    void (int *a,int *b)
    {  
            int c ;
            if(a>b) 
            { 
            c = a; a = b;b =c;  
            }     
    }                 
  • 相关阅读:
    首发Zend Studio 9.0.2正式版注册破解
    PHP 中Cookie和Session的使用
    PHP设计模式职责和单例模式
    软件工程工具学习(1)Visio
    java复习(4)数字处理类
    java复习(1)java与C++区别
    微信开发(1)微信防撤回功能实现
    java复习(3)字符串、数组
    java复习(2)java基础杂记
    java复习(5)接口、继承、多态
  • 原文地址:https://www.cnblogs.com/littleswan/p/12163668.html
Copyright © 2020-2023  润新知