前面学习了排序的相关算法,但在做OJ时,我们可以调用库里的函数
今天总结一下常用的sort的使用
std::sort
template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last);
template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
first、last:是我们要进行排序的范围
第三个参数comp:我们可以自己定义比较的方法,不写时默认operator<
int myints[] = { 8, 4, 3, 1, 6, 5, 0, 2, 7, 9 };
sort(myints, myints + 10);
for (int i = 0; i < sizeof(myints) / sizeof myints[0]; ++i)
{
cout << myints[i] << " ";
}
cout << endl;
vector<int> myvector(myints, myints + 10);
sort(myvector.begin(), myvector.end());
for (size_t i = 0; i < myvector.size(); ++i)
{
cout << myvector[i] << " ";
}
cout << endl;
bool comp(int a, int b)
{
return a>b;
}
int main()
{
int myints[] = { 8, 4, 3, 1, 6, 5, 0, 2, 7, 9 };
vector<int> myvector1(myints, myints + 10);
//用自定义的比较方法,降序
sort(myvector1.begin(), myvector1.end(),comp);
for (size_t i = 0; i < myvector1.size(); ++i)
{
cout << myvector1[i] << " ";
}
cout << endl;
//排一个字符数组,也可以
char a[11] = "bacdgef";
sort(a, a + 7);
for (int i = 0; i < 10; i++)
{
cout << a[i] << " ";
}
cout << endl;
sort(a, a + 7,comp);
for (int i = 0; i < 10; i++)
{
cout << a[i]<<" ";
}
cout << endl;
}