为什么要做个人网站,功能性质网站,宁波seo行业公司推荐,品牌购物平台有哪些文章目录 【 1. 基本原理 】【 2. sort 的应用 】实例 - sort 函数实现 升序排序和降序排序 函数名用法sort (first, last)基于 快速排序#xff0c;对容器或普通数组中 [ first, last ) 范围内的元素进行排序#xff0c;默认进行升序排序#xff08;从小到大#xff09;。… 文章目录 【 1. 基本原理 】【 2. sort 的应用 】实例 - sort 函数实现 升序排序和降序排序 函数名用法sort (first, last)基于 快速排序对容器或普通数组中 [ first, last ) 范围内的元素进行排序默认进行升序排序从小到大。stable_sort (first, last)和 sort() 函数功能相似不同之处在于对于 [first, last) 范围内值相同的元素该函数不会改变它们的相对位置。partial_sort (first, middle, last)从 [first,last) 范围内筛选出 muddle-first 个最小的元素并排序存放在 [firstmiddle) 区间中。partial_sort_copy (first, last, result_first, result_last)从 [first, last) 范围内筛选出 result_last-result_first 个元素排序并存储到 [result_first, result_last) 指定的范围中。is_sorted (first, last)检测 [first, last) 范围内是否已经排好序默认检测是否按升序排序。is_sorted_until (first, last)和 is_sorted() 函数功能类似唯一的区别在于如果 [first, last) 范围的元素没有排好序则该函数会返回一个指向首个不遵循排序规则的元素的迭代器。void nth_element (first, nth, last)找到 [first, last) 范围内按照排序规则默认按照升序排序应该位于第 nth 个位置处的元素并将其放置到此位置。同时使该位置左侧的所有元素都比其存放的元素小该位置右侧的所有元素都比其存放的元素大。
【 1. 基本原理 】
sort() 函数位于 algorithm头文件 中。sort() 函数 的适用条件 sort() 函数受到底层实现方式的限制它仅适用于普通数组和部分类型的容器。换句话说只有普通数组和具备以下条件的容器才能使用 sort() 函数 容器支持的迭代器类型必须为随机访问迭代器。这意味着sort() 只对 array、vector、deque 这 3 个容器提供支持。如果对容器中指定区域的元素做默认升序排序则元素类型必须支持 小于运算符同样如果选用标准库提供的其它排序规则元素类型也必须支持该排序规则底层实现所用的比较运算符如果sort() 函数在实现 排序时需要交换容器中元素的存储位置。这种情况下如果容器中存储的是自定义的类对象则该 类的内部必须提供移动构造函数和移动赋值运算符。 对于指定区域内 值相等的元素sort() 函数 无法保证它们的相对位置不发生改变。例如有如下一组数据 2 1 2 3 2 可以看到该组数据中包含多个值为 2 的元素。此时如果使用 sort() 函数进行排序则值为 2 的这 3 个元素的相对位置可能会发生改变排序结果为 1 2 2 2 3 可以看到原本红色的元素 2 位于绿色 2 和黑色 2 的左侧但经过 sort() 函数排序之后它们的相对位置发生了改变即红色 2 移动到了绿色 2 和黑色 2 的右侧。 实际场景中如果需要 保证值相等元素的相对位置不发生改变可以选用 stable_sort() 排序函数。 sort 的执行效率 sort() 函数的效率怎么样吗该函数实现排序的 平均时间复杂度为 N l o g 2 N Nlog_2N Nlog2N其中 N 为指定区域 [first, last) 中 last 和 first 的距离。
【 2. sort 的应用 】
C STL 标准库中的 sort() 函数本质就是一个模板函数该函数专门用来对容器或普通数组中指定范围内的元素进行升序排序除此之外我们也可以选择标准库提供的其它排序规则比如std::greaterT降序排序规则甚至还可以自定义排序规则。 first 和 last 都为随机访问迭代器它们的组合 [first, last) 用来指定要排序的目标区域另外在第 2 种格式中comp 可以是 C STL 标准库提供的排序规则比如 std::greaterT也可以是自定义的排序规则。 对 [first, last) 区域内的元素做默认的升序排序
void sort (RandomAccessIterator first, RandomAccessIterator last);按照指定的 降序排序规则对 [first, last) 区域内的元素进行排序。
void sort (RandomAccessIterator first, RandomAccessIterator last, greaterint() );实例 - sort 函数实现 升序排序和降序排序
#include iostream
#include algorithm
#include vector
using namespace std;int main()
{vectorint myvector{ 32, 71, 12, 45, 26, 80, 53, 33 };//升序排序默认sort(myvector.begin(), myvector.begin() 4); //(12 32 45 71) 26 80 53 33for (vectorint::iterator it myvector.begin(); it ! myvector.begin() 4; it) {cout *it ;}cout endl;//降序排序指定sort(myvector.begin(), myvector.begin() 4, greaterint()); //(71 45 32 12) 26 80 53 33for (vectorint::iterator it myvector.begin(); it ! myvector.begin() 4; it) {cout *it ;}return 0;
}