【C++基础】algorithm

C++ 的 <algorithm> 头文件提供了许多常用的算法,这些算法可以用于对容器中的元素进行排序、搜索、比较等操作。以下是一些常用的方法:

一、常用方法

1、 排序算法
sort():对容器中的元素进行排序。
stable_sort():对容器中的元素进行稳定排序。
partial_sort():部分排序,将前几个元素排好序。
nth_element():将指定位置的元素移到正确的位置,其他元素不保证顺序。
is_sorted():检查容器是否已经排序。

2、 查找算法
find():查找容器中指定值的元素。
find_if():根据指定的条件查找容器中的元素。
count():计算容器中指定值的出现次数。
binary_search():在有序序列中进行二分查找。

3、 合并和删除算法
merge():将两个有序序列合并成一个有序序列。
remove():删除容器中指定值的元素。
remove_if():根据指定的条件删除容器中的元素。
unique():去除容器中的重复元素。

4、 变换算法
transform():对容器中的元素进行变换。
copy():将一个容器的元素复制到另一个容器。
replace():将容器中指定值的元素替换为新值。

5、 数值算法
accumulate():计算容器中元素的累加值。
min_element()max_element():找到容器中最小和最大的元素。
count_if():根据指定条件计算容器中满足条件的元素个数。

6、 其他算法
reverse():反转容器中的元素顺序。
random_shuffle():随机打乱容器中的元素顺序。

这些算法都以泛型的方式设计,可以用于各种类型的容器,如数组、向量、列表、集合等,使得代码更加灵活和可复用。

二、Demo演示

#include <iostream>
#include <algorithm>
#include <vector>
#include <numeric>

int main() {
    // 创建一个整数向量
    std::vector<int> vec = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};

    // 打印原始向量
    std::cout << "Original vector: ";
    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // 排序算法
    std::sort(vec、begin(), vec、end());
    std::cout << "Sorted vector: ";
    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // 查找算法
    auto iter = std::find(vec、begin(), vec、end(), 5);
    if (iter != vec、end()) {
        std::cout << "Found value 5 at index: " << std::distance(vec、begin(), iter) << std::endl;
    } else {
        std::cout << "Value 5 not found in vector、" << std::endl;
    }

    // 删除算法
    vec、erase(std::remove(vec、begin(), vec、end(), 3), vec、end());
    std::cout << "Vector after removing value 3: ";
    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // 数值算法
    int sum = std::accumulate(vec、begin(), vec、end(), 0);
    std::cout << "Sum of elements in vector: " << sum << std::endl;

    // 变换算法
    std::transform(vec、begin(), vec、end(), vec、begin(), [](int x) { return x * x; });
    std::cout << "Vector after squaring each element: ";
    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}
// Original vector: 3 1 4 1 5 9 2 6 5 3 
// Sorted vector: 1 1 2 3 3 4 5 5 6 9 
// Found value 5 at index: 6
// Vector after removing value 3: 1 1 2 4 5 5 6 9 
// Sum of elements in vector: 33
// Vector after squaring each element: 1 1 4 16 25 25 36 81

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《数据结构算法分析:C语言描述》这本书是一本非常经典的计算机科学教材,主要介绍了C语言下的数据结构算法分析。这本书涵盖了很多基础数据结构算法,比如链表、堆、排序和搜索等等。通过学习这些知识,读者能够深入了解计算机科学的基础理论和实践技能。 从数据结构的角度来看,这本书深入浅出地介绍了线性数据结构和树状数据结构,并讲解了如何通过操作这些数据结构来进行高效的数据处理。例如,在数组中进行快速查找和插入、在链表中进行高效地增删操作、在树中进行高效的搜索等等。 从算法的角度来看,这本书介绍了很多著名的算法,比如递归、贪心算法、分治算法、动态规划算法等等。这些算法是计算机科学中非常重要的基础算法,它们在各个领域都有着广泛的应用。 总之,《数据结构算法分析:C语言描述》这本书是计算机科学领域的经典教材,对于想要深入了解数据结构算法分析的读者来说,这本书是不可或缺的。 ### 回答2: 《Data Structures and Algorithm Analysis in C》是一本关于数据结构算法的经典教材,作者是Mark Allen Weiss。该书主要分为两部分,第一部分介绍了C语言的编程基础,包括语言特性、指针、内存管理等;第二部分则涵盖了数据结构算法的各种概念、技术和实现方法。 本书首先介绍了常用数据结构,包括数组、链表、栈、队列、堆、二叉树等,然后讲解了各种经典算法,如排序、查找、图论算法等。在讲解数据结构算法的同时,作者对每个主题都提供了C语言代码实现,并给出了能够测试代码的样例数据。此外,书中还包括大量习题和实验,帮助读者深入理解和熟练掌握各种数据结构算法。 该书不仅适合作为计算机科学和工程专业的本科生和研究生的教材,也适合程序员进一步学习和提高自己的算法数据结构能力。通过学习本书,读者将会掌握各种数据结构算法的设计和实现方法,同时也能够提高自己的编程能力和提高代码的效率。 ### 回答3: 《Data Structures and Algorithm Analysis in C》(C语言数据结构算法分析)是一本经典的计算机科学教材,由Mark Allen Weiss撰写。本书以C语言基础,介绍了常见的数据结构算法,并涉及到其分析和实现。 本书分为四个部分。第一部分主要是C语言基础知识和算法分析的基本原则。第二部分介绍常见的数据结构,如数组、链表、树、堆和图等,旨在帮助读者了解这些数据结构的实现和应用。第三部分是算法设计和分析的内容,讲述了排序、查找、字符串匹配等经典问题,涉及到算法的复杂度和效率等方面。最后,第四部分提供了一些高级话题,如红黑树、哈希表等。 这本书的特点是内容包罗万象,深入浅出,除了C语言的基本知识外,还讲述了许多实用的技巧和方法。由于对数据结构算法的深入掌握是计算机科学人员必备的技能,因此该书可以作为各种程序设计相关课程、面试准备和算法实践的重要参考。 总之,这本书是数据结构算法领域的经典教材之一,对于任何想要提高编程能力和算法思维的人都是一本必读之作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值