首页 > 其他分享 >sort排序

sort排序

时间:2024-08-29 20:14:32浏览次数:6  
标签:sort struct int age grade student 排序

sort排序

任务一:选第k大的元素

#include<bits/stdc++.h>//任务:选第k大的元素
using namespace std;
int main(){
    vector<int>a={1,9,2,6,7,8};
    //方法一:从小到大排序(默认)
    sort(a.begin(),a.end());
    
    int k;
    cin>>k;
    cout<<a[a.size()-k]<<endl;
    //方法二:从大到小排序
    sort(a.begin(),a.end(),greater<int>());
    for(int i=0;i<a.size();i++){
        cout<<a[i]<<'\t';
    }
    cout<<'\n'<<a[k-1];
    return 0;
}

任务二:struct类型的排序

 

#include<bits/stdc++.h>//struct排序
using namespace std;
struct s{
    int grade;
    int age;
    string name;

};
//方法一:用函数
bool com(s&a,s&b){
    return a.age>b.age;//按年龄降序
}


int main(){
    vector<s>student;
    int x,y;
    string z;
    for(int i=0;i<4;i++){
        cin>>x>>y;
        cin>>z;
        s d;
        d.grade=x;
        d.age=y;
        d.name=z;
        student.push_back(d);
    }
    sort(student.begin(),student.end(),com);//用函数名com
        for(int i=0;i<4;i++){
        cout<<student[i].age<<","<<student[i].grade<<","<<student[i].name<<endl;
    }
    return 0;
}

方法二:在结构体里重载

#include<bits/stdc++.h>//struct排序
using namespace std;
struct s{
int grade;
int age;
string name;
bool operator<(const s&a) const{//标红部分固定
return grade>a.grade;//按成绩降序
}
};

 

int main(){
vector<s>student;
int x,y;
string z;
for(int i=0;i<4;i++){
cin>>x>>y;
cin>>z;
s d;
d.grade=x;
d.age=y;
d.name=z;
student.push_back(d);
}
sort(student.begin(),student.end());
for(int i=0;i<4;i++){
cout<<student[i].age<<","<<student[i].grade<<","<<student[i].name<<endl;
}
return 0;
}

#include<bits/stdc++.h>//struct排序
using namespace std;
struct s{
    int grade;
    int age;
    string name;

};
bool com(s&a,s&b){
    return a.age>b.age;
}
struct Cmp{
    bool operator()(s&a,s&b){//按分数升序,operator()固定
        return a.grade<b.grade;
    }
};

int main(){
    vector<s>student;
    int x,y;
    string z;
    for(int i=0;i<4;i++){
        cin>>x>>y;
        cin>>z;
        s d;
        d.grade=x;
        d.age=y;
        d.name=z;
        student.push_back(d);
    }
    sort(student.begin(),student.end(),Cmp());//这里面写结构体排序()
        for(int i=0;i<4;i++){
        cout<<student[i].age<<","<<student[i].grade<<","<<student[i].name<<endl;
    }
    return 0;
}
方法三再定义一个结构体作为排序

任务三:对学生成绩进行排名同分同名

#include<bits/stdc++.h>//struct排序
using namespace std;
struct s{
int grade;
int age;
string name;
int rank;
bool operator<(const s&a) const{
return grade>a.grade;
}
};

 

int main(){
vector<s>student;
int x,y;
string z;
for(int i=0;i<4;i++){
cin>>x>>y;
cin>>z;
s d;
d.grade=x;
d.age=y;
d.name=z;
student.push_back(d);
}
sort(student.begin(),student.end());
int l=1;//控制排名
student[0].rank=l;
for(int i=0;i<4;i++){
cout<<student[i].age<<","<<student[i].grade<<","<<student[i].name<<endl;
if(student[i].grade<student[i-1].grade){
l++;

}
student[i].rank=l;
}
cout<<"--------------------"<<endl;
for(auto i:student){
cout<<i.name<<'\t'<<i.rank<<'\n';
}
return 0;
}

标签:sort,struct,int,age,grade,student,排序
From: https://www.cnblogs.com/luckyhappyyaoyao/p/18387425

相关文章

  • Java算法之Gnome 排序
    简介Gnome排序,又称为双向插入排序或鸡尾酒排序,是一种改进的插入排序算法。它在每次迭代中不仅将最小的元素移动到前面,同时也将最大的元素移动到后面。这种排序算法在每次迭代中同时向两个方向进行移动,因此得名。算法步骤从数组的两端开始,向中间进行扫描。如果左侧元素大于......
  • Java算法之基数排序(Radix Sort)
    简介基数排序是一种非比较型整数排序算法,其原理是按照低位先排序,然后收集,再按照高位排序,再收集,依次类推,直到最高位。这种方法可以视为对每个位上的数字进行稳定的排序。算法步骤确定最大数的位数。对每一位进行排序:从最低位开始,使用稳定的排序算法(如计数排序)对当前位进......
  • ElasticSearch学习笔记(三)RestClient操作文档、DSL查询文档、搜索结果排序
    文章目录前言5RestClient操作文档5.4删除文档5.4修改文档5.5批量导入文档6DSL查询文档6.1准备工作6.2全文检索查询6.3精准查询6.4地理坐标查询6.5复合查询6.5.1相关性算分6.5.2布尔查询7搜索结果处理7.1排序7.1.1普通字段排序7.1.2地理坐标排序......
  • Java中的数组用法(复制、替换、查找与排序)
    在Java编程中,数组是一种基础且强大的数据结构,用于存储一组相同类型的元素。本文将深入探讨数组在Java中的用法,并展示如何进行数组的复制与替换、查找以及排序。(这些了解与学习只需要一个IDEA就可以进行练习了 )##数组的声明与初始化在Java中,数组的声明和初始化非常直观。以......
  • 冒泡排序算法
    冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止,这意味着数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(或说是......
  • go 结构体切片自定义排序
    常见类型的默认实现gosort包默认支持int(sort.Ints(x[]int))、float64s(sort.Float64s(x[]float64))、string(sort.Strings(x[]string))从小到大排序,反序使用类似于sort.Sort(sort.Reverse(sort.Ints(x[]int)))的方式。结构体切片的自定义实现packagemainimport( "fmt" "s......
  • MySQL字符集和排序规则详解
    前言MySQL中,字符集和排序规则在处理文本数据时起着至关重要的作用,本文将详细介绍MySQL中的字符集和排序规则。简介字符集(CharacterSet):字符集定义了数据库中可以存储的字符的集合。在MySQL中,常见的字符集包括utf8、utf8mb4、latin1等。utf8mb4字符集是用于在MySQL中存......
  • 82. 删除排序链表中的重复元素 II
    传送锚点:力扣给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输入:head=[],val=1输出:[]示例3:输入:head=[7,7,7,7],val=7输......
  • Python中几种lambda排序方法
    1.对单个变量进行排序#lst=[[5,8],[5,3],[3,1]]lst.sort(key=lambdax:x[1])#lst=[[3,1],[5,8],[5,3]]以元素的第二个元素升序排列2.对多个变量进行排序#lst=[[5,8],[5,3],[3,1]]lst.sort(key=lambdax:(x[1],x[0]))#lst=[[3,1],[5,3],[5,8]]以元素的......
  • 排序
    排序这个东西真的挺卷的,有些就追求极致的速度,有些追求极致的简洁,有必要学一学提一提,尽管\(sort\)能解决绝大部分问题。学习笔记冒泡排序mpft第一个学的排序也是最简单的排序,也就是一个一个比较,如果右边的数大于左边的数就交换。#include<bits/stdc++.h>usingnamespace......