在C++中,selectionSort(选择排序)是一种简单且常用的排序算法。它通过重复从待排序的数据中选择最小(或最大)元素,然后将其放置在已排序序列的末尾,直到所有元素排序完成。使用std::函数作为参数来实现selectionSort有助于增加代码的灵活性和可重用性。
下面是使用std::函数作为参数的selectionSort的一种实现方式:
#include <iostream>
#include <vector>
#include <algorithm>
template<typename T, typename Comparator>
void selectionSort(std::vector<T>& arr, Comparator compare) {
for (int i = 0; i < arr.size() - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < arr.size(); j++) {
if (compare(arr[j], arr[minIndex])) {
minIndex = j;
}
}
std::swap(arr[i], arr[minIndex]);
}
}
int main() {
std::vector<int> arr = {4, 2, 7, 1, 5};
std::cout << "Before sorting: ";
for (const auto& num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
// 使用std::greater作为比较函数,按照降序排序
selectionSort(arr, std::greater<int>());
std::cout << "After sorting: ";
for (const auto& num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
这个示例中,我们使用了std::函数对象std::greater作为参数来实现selectionSort。std::greater是一个函数对象,用于比较两个元素的大小关系(按照降序排序)。通过将std::greater作为参数传递给selectionSort函数,我们可以轻松地改变排序的方式,例如改为按照升序排序。
优势:
应用场景:
腾讯云相关产品推荐:(注意,此处不能提及具体云计算品牌商,故省略推荐的腾讯云相关产品和产品介绍链接地址)
希望以上信息对您有所帮助!
T-Day
云+社区技术沙龙[第14期]
云+社区沙龙online [国产数据库]
玩转 WordPress 视频征稿活动——大咖分享第1期
云+社区技术沙龙[第22期]
云+社区技术沙龙[第1期]
serverless days
云+社区技术沙龙 [第31期]
领取专属 10元无门槛券
手把手带您无忧上云