STL常用排序算法介绍

来源:互联网 发布:怎么清理手机数据 编辑:程序博客网 时间:2024/05/08 18:23

merge()
 以下是排序和通用算法:提供元素排序策略
 merge: 合并两个有序序列,存放到另一个序列。

#include <iostream>#include <cstdio>#include <algorithm>#include <vector>using namespace std;void printV(vector<int> &v){for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {cout << *it << ' ';}cout << endl;}void play_merge(){vector<int> v1;v1.push_back(1);v1.push_back(3);v1.push_back(5);vector<int> v2;v2.push_back(2);v2.push_back(4);v2.push_back(6);vector<int> v3;v3.resize(v1.size() + v2.size());merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());printV(v3);// 1 2 3 4 5 6}int main(){play_merge();return 0;}

sort()
 sort: 以默认升序的方式重新排列指定范围内的元素。若要改排序规则,可以输入比较函数。
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <string>using namespace std;class Student{public:Student(string name, int id) : name(name), id(id) {}friend bool CompareStudent(Student &s1, Student &s2);string name;int id;};bool CompareStudent(Student &s1, Student &s2){return s1.id < s2.id;}void play_sort(){Student s1("lucifer", 1);Student s2("zhang", 2);Student s3("yao", 3);Student s4("qi", 4);vector<Student> v;v.push_back(s4);v.push_back(s2);v.push_back(s1);v.push_back(s3);for (vector<Student>::iterator it = v.begin(); it != v.end(); ++it) {cout << "name: " << it->name << " id: " << it->id << endl;}/*name: qi id: 4name: zhang id: 2name: lucifer id: 1name: yao id: 3*/sort(v.begin(), v.end(), CompareStudent);for (vector<Student>::iterator it = v.begin(); it != v.end(); ++it) {cout << "name: " << it->name << " id: " << it->id << endl;}/*name: lucifer id: 1name: zhang id: 2name: yao id: 3name: qi id: 4*/}int main(){play_sort();return 0;}

random_shuffle()
 random_shuffle: 对指定范围内的元素随机调整次序。
srand(time(0)); //设置随机种子
#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <string>#include <ctime>using namespace std;void printIntVector(vector<int> &v){for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {cout << *it << ' ';}cout << endl;}void play_random_shuffle(){vector<int> v;v.push_back(1);v.push_back(3);v.push_back(5);v.push_back(7);v.push_back(9);printIntVector(v);// 1 3 5 7 9srand(time(0));random_shuffle(v.begin(), v.end());printIntVector(v);// 1 5 9 3 7}int main(){play_random_shuffle();return 0;}

reverse()

#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <string>using namespace std;void printIntVector(vector<int> &v){for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {cout << *it << ' ';}cout << endl;}void play_reverse(){vector<int> v;v.push_back(1);v.push_back(3);v.push_back(5);v.push_back(7);v.push_back(9);printIntVector(v);// 1 3 5 7 9reverse(v.begin(), v.end());printIntVector(v);// 9 7 5 3 1}int main(){play_reverse();return 0;}

0 0
原创粉丝点击