二分查找法

二分查找法是一种在有序数组中查找特定元素的算法。它通过将目标值与数组的中间元素进行比较,然后根据比较结果将查找范围缩小一半,直到找到目标值或者确定目标值不存在为止。

sort函数的功能和举例

sort函数是一种用于对数组或容器进行排序的函数。它可以按照升序或降序对元素进行排序,并且可以根据自定义的比较函数进行排序。

例如,对一个整型数组进行升序排序可以使用以下代码:

int arr[] = {5, 2, 8, 1, 9};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, arr + n);

p-queue函数的功能和举例

p-queue函数是一种优先队列数据结构的实现。它可以将元素按照优先级进行排序,并且可以很高效地插入和删除元素。

例如,可以使用p-queue函数来实现一个按照元素大小进行排序的优先队列:

#include <queue>
using namespace std;

priority_queue<int> pq;
pq.push(5);
pq.push(2);
pq.push(8);
pq.push(1);
pq.push(9);

递归和非递归方法分别写阶乘

递归方法:

int factorial(int n) {
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }  
}

非递归方法:

int factorial(int n) {
    int result = 1;
    for (int i = 1; i <= n; i++) {
        result *= i;
    }
    return result;
}

小岛(图)的深搜和宽搜

深搜(DFS) 是一种图遍历算法,通过从一个顶点出发,递归地访问其相邻顶点,直到所有可达的顶点都被访问过为止。

宽搜(BFS) 是一种图遍历算法,通过从一个顶点出发,依次访问其所有邻接顶点,然后再依次访问邻接顶点的邻接顶点,直到所有可达的顶点都被访问过为止。

01背包问题(草药)

01背包问题是一个经典的动态规划问题,其目标是在给定的一系列物品中选择一些物品放入容量为W的背包中,使得物品的总价值最大。每个物品只能选择放入背包一次(0-1选择)。

例如,有5个草药,每个草药的重量和价值分别为:

  • 草药1:重量3,价值4
  • 草药2:重量4,价值5
  • 草药3:重量2,价值3
  • 草药4:重量5,价值6
  • 草药5:重量1,价值2

背包容量为10。可以使用01背包问题来确定应该选择哪些草药放入背包中,使得草药的总价值最大。

算法详解:二分查找、排序、优先队列、递归与非递归、图遍历、背包问题

原文地址: https://www.cveoy.top/t/topic/qsen 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录