使用STL函数实现插入排序。
先决条件:插入排序,std :: rotate,std :: upper_bound,C++迭代器。
想法是使用std :: upper_bound查找使数组未排序的元素。然后,我们可以旋转未排序的部分,以便最终对其进行排序。我们可以遍历数组进行这些操作,结果将是一个排序后的数组。
该代码是脱机使用的,目的是显示硬编码和易于理解的代码。
// C++ program to implement insertion sort using STL.
#include
// Function to sort the array
void insertionSort(std::vector &vec)
{
for (auto it = vec.begin(); it != vec.end(); it++)
{
// Searching the upper bound, i.e., first
// element greater than *it from beginning
auto const insertion_point =
std::upper_bound(vec.begin(), it, *it);
// Shifting the unsorted part
std::rotate(insertion_point, it, it+1);
}
}
// Function to print the array
void print(std::vector vec)
{
for( int x : vec)
std::cout << x << " ";
std::cout << '\n';
}
// Driver code
int main()
{
std::vector arr = {2, 1, 5, 3, 7, 5, 4, 6};
insertionSort(arr);
print(arr);
}
输出:
1 2 3 4 5 5 6 7