STL(二十三)排序演算法

2021-08-07 16:55:08 字數 1990 閱讀 5119

sorting algorithms是一組將無序序列排列成有序序列的模板函式或與排序相關的模板函式,提供了排序、折半搜尋、歸併、集合操作、堆操作、最值求解、字典比較和排列組合等功能。

排序演算法一般要求容器提供隨機訪問迭代器,一般適用於序列容器,如向量容器,佇列容器和字串容器等,但不適用於內部資料結構較為複雜的關聯容器,如集合容器、映照容器、雜湊集合容器和雜湊映照容器等。

一、元素入堆push_heap

在優先佇列一章中,已對堆(heap)進行了簡要的介紹,現在用迭代器的形式給出更為詳細的說明和分析

二、建立堆make_heap

make_heap演算法重新排列元素順序,使它們邏輯上構成乙個堆

三、元素出堆pop_heap

相對於元素入堆演算法push_heap,pop_heap演算法將元素進行出堆操作。與push_heap一樣,pop_heap必須對堆操作才有意義。

四、堆排序sort_heap

是一種利用堆進行排序的演算法

五、是否為堆is_heap

並不是c++標準演算法函式,而是sgi c++ stl的乙個擴充套件演算法,用於判斷迭代器區間[first, last)元素是否構成乙個預設的大根堆,或依照二元謂詞判斷comp的有序關係,是否構成乙個堆

六、區域性排序partial_sort

僅對部分元素進行排序,通常用來挑選最小(或最大)的若干元素。由於內部使用堆排序來實現

七、區域性排序複製partial_sort_copy

本質上也是實行區域性的堆排序,只是排序結果被放置到另乙個區間範圍中

八、排序sort

與堆排序一樣,sort演算法也要求使用隨機訪問迭代器進行排序

九、歸併merge

將兩個具有相同公升降方向的有序序列,合併成乙個有序序列

十、內部歸併inplace_merge

將乙個序列內部兩個公升降同向的子串行進行排序合併

十一、隱定排序stable_sort

也是將區間元素排序,但可保持等價元素的相對順序穩定不變

十二、是否排序is_sorted

用於判斷區間元素是否排序

十三、第n個元素nth_element

直觀地說,nth_element演算法僅排序第nth元素(從0開始索引)

十四、下確界lower_bound

用於在有序的區間中查詢首個不小於某值的元素(大於等於某值)

十五、上確界upper_bound

查詢有序區間中首個大於某值的元素(大於某值)

十六、等價區間equal_range

用折半方法查詢第乙個和最後乙個可以插入某值的元素,這些元素構成所謂的等價區間

十七、折半搜尋binary_search

在有序的區間中用折半方法搜尋等於某值的元素

十八、子集合includes

用於檢測乙個有序區間是否包含另乙個有序區間,相當於乙個集合包含關係的判斷

十九、集合求並set_union

對兩個序列區間的元素進行集合求並

二十、集合求交set_intersection

對兩個有序區間的元素進行集合求交

二十一、集合求差set_difference

求兩個有序區間元素集合的差

二十二、集合求異set_symmetric_difference

對兩個有序區間的元素集合a和b進行求異

二十三、最小值min

min演算法返回兩個元素中的較小值

二十四、最大值max

返回兩個元素中的較大值

二十五、最小元素min_element

返回區間中的最小元素

二十六、最大元素max_element

返回區間中的最大元素

二十七、字典比較lexicographical_compare

按字典方式給出兩個區間序列的大小比較

二十八、下一排列組合next_permutation

對區間元素進行一次組合排序,使之字典順序大於原來的排列

二十九、上一排列組合prev_permutation

用於選擇乙個字典順序更小的排列

演算法(二十三)

1 給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。public int maxsubarray int nums return maxsum 複雜度分析 public int maxsubarray int nums return maxsum 2 ...

演算法二十三 奶牛吃草

有乙隻奶牛在一條筆直的道路上 可以看做是乙個數軸 初始,它在道路上座標為 k 的地方。這條道路上有 n 棵非常新鮮的青草 編號從 1 開始 其中第 i 棵青草位於道路上座標為 x i 的地方。貝西每秒鐘可以沿著道路的方向向前 座標加 或向後 座標減 移動乙個座標單位的距離。它只要移動到青草所在的地方...

隨筆 二十三

1.gradle 完a整指南 android 2.android gradle 外掛程式 3.0 挖坑日記 3.android效能優化全方面解析 4.android studio 3.2新功能特性 5.重新認識 androidstudio 和 gradle,這些都是你應該知道的 6。美團外賣andr...