C++头文件algorithm 2——Sorting
来源:互联网 发布:推荐淘宝卖高仿鞋的店 编辑:程序博客网 时间:2024/06/05 15:45
sort
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp)
对元素进行排序,默认为升序。first,last表示[first,last)。comp二元函数,为可选参数,设定新的排序规则。
example
#include<iostream>#include<algorithm>#include<vector>using namespace std;bool myfunction(int i, int j){ return(i < j); }struct myclass{ bool operator()(int i, int j){ return (i < j); }}myobject;int main(){ int myints[] = { 32, 71, 12, 45, 26, 80, 53, 33 }; vector<int> myvector(myints, myints + 8); //using default comparison (operator <) sort(myvector.begin(),myvector.begin()+4); //对(32,71,12,45)进行部分升序排序 cout << "default comparison:"; for (vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it) cout << *it << " "; cout << endl; //using function as comp sort(myvector.begin() + 4, myvector.end(), myfunction); //对(26,80,53,33)进行部分升序排序 cout << "function as comp:"; for (vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it) cout << *it << " "; cout << endl; //using object as comp sort(myvector.begin(), myvector.end(), myobject); //对全部元素进行升序排序 cout << "object as comp:"; for (vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it) cout << *it << " "; cout << endl; //using object as comp return 0;}
output
stable_sort
void stable_sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp )。stable_sort功能与sort类似,但保持元素之间的相对位置。
example
#include<iostream>#include<algorithm>#include<vector>using namespace std;bool compare_as_ints(double i, double j){ return (int(i) < int(j));}int main(){ double mydoubles[] = { 3.14, 1.41, 2.72, 4.67, 1.73, 1.32, 1.62, 2.58 }; vector<double> myvector; myvector.assign(mydoubles, mydoubles + 8); cout << "default comparison:"; stable_sort(myvector.begin(), myvector.end()); for (vector<double>::iterator it = myvector.begin(); it != myvector.end(); ++it) cout << *it << " "; cout << endl; myvector.assign(mydoubles, mydoubles + 8); cout << "compare_as_ints:"; stable_sort(myvector.begin(), myvector.end(), compare_as_ints); for (vector<double>::iterator it = myvector.begin(); it != myvector.end(); ++it) cout << *it << " "; cout << endl; return 0;}
output
partial_sort
void partial_sort (RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last, Compare comp)
first表示其实位置
middle表示某个中间位置,排序结果中只有从first到middle是有序的
last表示最终位置
comp表示二元函数,自定义的排序规则,可选参数。
example
#include<iostream>#include<algorithm>#include<vector>using namespace std;bool myfunction(int i, int j){ return (i < j); }int main(){ int myints[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, }; vector<int> myvector(myints, myints + 9); //using default comparison(operator<) partial_sort(myvector.begin(), myvector.begin() + 5, myvector.end()); cout << "default comparison:"; for (auto x : myvector) cout << x << " "; cout << endl; //using function as comp cout << "function as comp:"; partial_sort(myvector.begin(), myvector.begin() + 5, myvector.end()); for (auto x : myvector) cout << x << " "; cout << endl;}
output
partial_sort_copy
partial_sort_copy (InputIterator first,InputIterator last, RandomAccessIterator result_first, RandomAccessIterator result_last, Compare comp)
对[first,last)进行排序,并将结果复制保存到[result_first,result_last)。被复制元素的数目是[result_first,result_last)的长度,除非它的长度大于[first,last)中元素数目。comp表示二元函数,自定义的排序规则,可选参数。
example
#include<iostream>#include<algorithm>#include<vector>using namespace std;bool myfunction(int i, int j){ return (i < j); }int main(){ int myints[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, }; vector<int> myvector(5); //using default comparison(operator<) partial_sort_copy(myints, myints + 9, myvector.begin(), myvector.end()); cout << "myvector contains:"; for (auto x : myvector) cout << x << " "; cout << endl; return 0;}
output
is_sorted
bool is_sorted (ForwardIterator first, ForwardIterator last, Compare comp)
first,last表示范围;
comp表示排序规则,二元函数,可选参数。
example
#include<iostream>#include<algorithm>#include<array>using namespace std;int main(){ array<int, 4> myarray = { 2, 3, 1, 4 }; do{ //尝试一个新的排列 prev_permutation(myarray.begin(), myarray.end()); cout << "myarray:"; for (auto x : myarray) cout << x << " "; cout << endl; } while (!is_sorted(myarray.begin(), myarray.end())); cout << "The array is sorted!" << endl; return 0;}
output
is_sorted_until
ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last, Compare comp)
函数返回在[first,last)中第一个不满足升序排序元素的迭代器。从first到返回的迭代器之间是有序的。如果所有元素是有序的,函数返回last。
example
#include<iostream>#include<algorithm>#include<array>using namespace std;int main(){ array<int, 4> myarray = { 2, 3, 1, 4 }; array<int, 4>::iterator it; do { prev_permutation(myarray.begin(), myarray.end()); cout << "myarray:"; for (auto x : myarray) cout << x << " "; it = is_sorted_until(myarray.begin(), myarray.end()); cout << "【" << (it - myarray.begin()) << " elements sorted】\n"; } while (it != myarray.end()); cout << "The array is sorted\n"; return 0;}
output
nth_element
void nth_element (RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last, Compare comp)
first表示起始位置
nth表示要排序的位置
last表示终止位置
comp自定义排序规则,二元函数,可选参数
example
#include<iostream>#include<algorithm>#include<vector>using namespace std;bool myfunction(int i, int j){ return(i < j); }int main(){ vector<int> myvector; for (int i = 1; i < 10; ++i) myvector.push_back(i); random_shuffle(myvector.begin(), myvector.end()); cout << "myvector contains:"; for (auto x : myvector) cout << x << " "; cout << endl; nth_element(myvector.begin(), myvector.begin() + 5, myvector.end()); cout << "default comparison:"; for (auto x : myvector) cout << x << " "; cout << endl; random_shuffle(myvector.begin(), myvector.end()); cout << "myvector contains:"; for (auto x : myvector) cout << x << " "; cout << endl; nth_element(myvector.begin(),myvector.begin()+5, myvector.end(), myfunction); cout << "function as comp:"; for (auto x : myvector) cout << x << " "; cout << endl; return 0;}
output
- C++头文件algorithm 2——Sorting
- C/C++笔试必须熟悉掌握的头文件系列(八)——algorithm
- c++-algorithm 头文件排序sort
- c++-algorithm 头文件排序sort
- C++ 头文件algorithm 1——partition
- C++头文件algorithm 3——Min/Max
- Algorithm头文件简介
- algorithm头文件源码
- algorithm头文件
- Algorithm头文件学习
- C++ <algorithm>头文件
- <algorithm>头文件
- Analysis and implement some simple sorting algorithm.(2)——heapsort
- Sorting Algorithm
- Sorting Algorithm
- Sorting Algorithm
- c++中algorithm头文件
- C++中的algorithm头文件
- MongoDB:2-MongoDB的基本命令
- 自定义圆加速减速
- configure build path 中各选项的意思
- 数据结构回顾和总结(二叉搜索树(BST)的基本操作)
- 探新Web前端开发(四)
- C++头文件algorithm 2——Sorting
- HDOJ 2087 剪花布条
- mvp模式
- Icpc训练赛 + 国庆大礼包
- java实现希尔排序
- Codeforces Round#412 C Success Rate
- Rxjava2-小白入门(二)
- 【JavaScript】DOM基础
- HttpClient在Android Studio中使用