专栏首页机器视觉CV【C++简明教程】Python和C++指定元素排序比较

【C++简明教程】Python和C++指定元素排序比较

Python 中的排序

在 Python 中,常用的排序就是 sorted ,对于列表这种数据结构来说,还有 sort 方法

列表的排序

使用 sort 方法进行排序,以第二个值进行升序排序,列表的 sort 方法是原地排序

另外一种排序方法是 sorted ,此方法不是原地排序,以第一个值进行排序,同样也是默认升序排序

字典排序

有时候我们也需要对字典进行排序,也是使用 sorted 函数,不过对字典排序后返回的是列表,列表中是元组(tuple)

C++ 中的排序

对 vector 排序

要对 vector 容器中的元素排序,可以使用 algorithm 算法库中的 sort 函数

#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;

int main() {
 vector<int> a;
 cout << "sort before" << endl;
 for (int i = 0; i <10; i++){
  a.push_back(10-i);
  cout << a[i] << "  ";
 }
 cout << endl;
 cout << "sort after" << endl;
 sort(a.begin(), a.end());  // 
 for (int i = 0; i < 10; i++)
 {
  cout << a[i] << "  " ;
 }
 cout << endl;
 return 0;
}

对 2 维vector 排序

类似于 Python ,我们也可以指定根据哪个元素进行排序

#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;

# 根据第二个元素进行排序
bool sort_by_second_val(vector<int> v1, vector<int> v2) {
 return v1[1] > v2[1];
}

int main() {
    // 模拟一个输入
 vector < vector<int>> arr;
 for (int i = 0; i < 10; i+=2)
 {
  vector<int> temp;
  temp.push_back(i);
  temp.push_back(i+1);
  arr.push_back(temp);
 }
    // 排序前:arr = [[0, 1], [2, 3], [4, 5], [6, 7],[8, 9]]
 sort(arr.begin(), arr.end(), sort_by_second_val);
    // 排序后:arr = [[8, 9], [6, 7], [4, 5], [2, 3],[0, 1]]
 return 0;
}

对结构体进行排序

模拟一个学生管理系统,依次创建学生信息,然后加入到 vector 中,接着对学生的年龄进行排序

#include<vector>
#include<iostream>
#include<algorithm>
#include <string.h>
using namespace std;

struct Studen{
 string name;
 int age;
};

bool sort_by_age(Studen s1, Studen s2) {
 return s1.age<  s2.age;

}

int main() {
 vector<Studen> studens;  // 用来存储所有学生的信息
 Studen s1, s2, s3;   // 创建 3 个学生
 s1.name = "xx";
 s1.age = 20;
 studens.push_back(s1);

 s2.name = "yy";
 s2.age = 18;
 studens.push_back(s2);

 s3.name = "zz";
 s3.age = 10;
 studens.push_back(s3);

 sort(studens.begin(), studens.end(), sort_by_age);

 return 0;
}

排序前

排序后

本文分享自微信公众号 - 机器视觉CV(AIandCV),作者:Leong

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【位运算】只出现一次的数字 II,数电的知识终于用上了!

    https://leetcode-cn.com/problems/single-number-ii/

    机器视觉CV
  • 目标检测实战项目『代码实战篇』

    深度学习的三驾马车:数据、模型、算力。本文将从这三方面,实现 YOLO 目标检测,让自己的数据跑起来

    机器视觉CV
  • 目标检测之R-CNN系列综述

    上几期我们讲过目标检测 One-Stage 的代表 YOLOv3 本来这一期是打算写 SSD(One-Stage 的另一个代表) 的,发现 SSD 其中涉及的知...

    机器视觉CV
  • 【C++简明教程】Python和C++指定元素排序比较

    在 Python 中,常用的排序就是 sorted ,对于列表这种数据结构来说,还有 sort 方法

    黄博的机器学习圈子
  • c++ sort 学习笔记

    sort(begin,end,排序方法),排序方法可以从大到小,也可以从小到大,若不传第三个参数,默认从小到大排序

    LRainner
  • Golang语言排序的几种方式

    map是键值对是一个无序集合。如果需要稳定的迭代顺序,则必须维护独立的数据结构 比如:

    yoyofx
  • Golang sort 包使用

    Golang 中的标准库 sort 包为切片及用户定义的集合的排序操作提供了原语。sort包提供了对内置类型切片的排序支持,如 []int切片、[]float6...

    Dabelv
  • C++快速排序原理深究优化

    前面写过一篇关于归并和快排的文章《归并快排算法比较及求第K大元素》,但文中实现的快排算法,在某些极端情况下时间复杂度会退化到 O(n2),效率将是无法接受的。本...

    evenleo
  • [AWR报告]In-memory Sort %

    从这期开始讲解awr报告的部分,上期说的是awr整体的部分,今天开始对里面的细节说起

    bsbforever
  • Android一 流

    补充Java知识:流 java.io 四个抽象类: 字节流:InputStream OutputStream 字符流:Reader Writer 站在程序角度上...

    小端

扫码关注云+社区

领取腾讯云代金券