C++STL中的排序函数sort()相关用法:
Sort(); //使用此函数必须先包含头文件#include <algorithm>
//此函数的排序类似于快排;时间复杂度为n*log2(n);
//此函数适用于排列数组中的元素或者其他容器中的元素,例如vector;
Sort()函数的用法:
1sort(begin, end)此时函数需要传入两个参数,此时传入的第一个参数为排序范围内第一个元素的地址(或迭代器),第二个参数为排序范围内最后一个元素的地址(或迭代器);
此种方法排序默认为从小到大进行排序;
I.e.(迭代器)
vector<int> v;
v.push_back(3);
v.push_back(4);
v.push_back(1);
v.push_back(2);
v.push_back(7);
vector<int>::iterator iter;
for (iter = v.begin(); iter != v.end(); iter++)
cout << *iter << " ";
cout << endl;
iter = v.begin() + 3;
sort(iter, v.end());//此为排列第四个元素到最后一个元素的顺序,从小到大;
for (iter = v.begin(); iter != v.end(); iter++)
cout << *iter << " ";
I.e.(数组)
int a[10];
for (int i = 0; i < 10; i++)
cin >> a[i];
sort(a, a + 10);//注意此时的地址应该是首地址加上数组的长度,不应该是加长度-1;
for (int i = 0; i < 10; i++)
cout << a[i] << " ";
cout << endl;
2 Sort(begin, end, compare);
要实现从大到小排序必须在函数参数中加上第三个参数,告诉程序从大到小进行排序;
此时要在函数中声明加入排序函数bool compare(int a, int b) {return (a > b)}
在调用sort()函数时要在第三个参数中加上compare;
即sort(begin, end, compare);//注意begin和end与上面的一样,第三个参数compare不需要对此函数传入参数(规则);更不能写成compare();这样编译器会报错;
I.e. int a[10];
Compare(int a, int b) {return a > b}
for (int i = 0; i < 10; i++)
cin >> a[i];
sort(a, a + 10, compare);//实现从大到小;
for (int i = 0; i < 10; i++)
cout << a[i] << " ";
cout << endl;
3一种更加简单的实现从大到小排序的方法:
第三个参数不用传入函数,只要把第三个参数写成以下形式,即可告诉编译器你需要的排序方式;
Less<type_name>() //从小到大,注意后面的括号;
Greater<type_name>()//从大到小;
I.e.
int a[10];
for (int i = 0; i < 10; i++)
cin >> a[i];
sort(a, a + 10, less<int>());
for (int i = 0; i < 10; i++)
cout << a[i] << " ";
cout << endl;