【C++简明教程】Python和C++指定元素排序比较
时间:2022-07-23
本文章向大家介绍【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;
}
排序前
排序后
- 正确的Win主机网站伪静态设置方法
- HDUOJ----(1084)What Is Your Grade?
- HDUOJ------(1272)小希的迷宫
- HDUOJ ---1269迷宫城堡
- HDUOJ---1213How Many Tables
- hduoj----(1033)Edge
- HDUOJ----(1031)Design T-Shirt
- HDUOJ----(1030)Delta-wave
- 身份切换脚本,免登入切换权限的利器
- HDUOJ---What Are You Talking About
- HDUOJ-----(1251)统计难题
- HDUOJ-----1541 Stars
- HDUOJ--------(1198)Farm Irrigation
- NYOJ-------三角形
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法