用C++一步步写算法Day_1

简介:           这是受到朋友推荐的一位神级人物博客的启发,开始有了继续学习C++的路径和方法,接下来的很长一段时间,我将通过从写简单的算法开始一步步学习和熟练C++语法和对所写代码的健壮性测试。

          这是受到朋友推荐的一位神级人物博客的启发,开始有了继续学习C++的路径和方法,接下来的很长一段时间,我将通过从写简单的算法开始一步步学习和熟练C++语法和对所写代码的健壮性测试。结合《数据结构和算法分析C++》第三版作为参考。

           数组查找算法,主函数是find(),用关键字template定义了类模板,尖括号中的内容相当于函数的参数列表,<变量类型  变量名称>, 这里用了不太容易混淆的typename代替别的类型,比如class。type就是我们自己定义的类型名称,也可以用T或Type。

        当模板被调用时,type将被具体的类型值(int & string)代替,后面就使用了int代替了!在main.h中也要在声明前加上类模板开头。

        用指针来实现数组元素的查找,提高了代码运行效率,首先定义头尾指针分别指向int数组的头和尾的地址:

start :0x7fff3c5297d0
end : 0x7fff3c5297f8

d0到f8 ,地址距离是40bit,int长度是4bit,所以数组长度是10,也就是length的值。注意我们用int定义的数组,其长度单位也是int,而地址显示是按位计算的!

        下面我们在看下数组元素的地址,就清楚啦!

0 -> 0x7fff2dc8b520
1 -> 0x7fff2dc8b524
2 -> 0x7fff2dc8b528
3 -> 0x7fff2dc8b52c
4 -> 0x7fff2dc8b530
5 -> 0x7fff2dc8b534
6 -> 0x7fff2dc8b538
7 -> 0x7fff2dc8b53c
8 -> 0x7fff2dc8b540
9 -> 0x7fff2dc8b544

start -> 0x7fff2dc8b520
end  -> 0x7fff2dc8b548

        下面是我运行的完整代码:

        main.h

 

#ifndef MAIN_H_
#define MAIN_H_

static void test1();
static void test2();

template<class type>
int find(type array[], int length, type value);


#endif

       man.cpp

#include "main.h"
#include <assert.h>
#include <cstdio>
#define FALSE 1
#define TRUE 0

template<typename type>
int find(type array[], int length, type value)
{
    if(NULL == array || 0 == length)
        return FALSE;

    type* start = array;
    type* end = array + length;
    while(start < end){
        if(value == *start)
            return (start - array);
        start ++;
    }

    return FALSE;
}

static void test1()
{
    int array[10] = {0};
    assert(FALSE == find<int>(NULL, 10, 10));
    assert(FALSE == find<int>(array, 0, 10));
}

static void test2()
{
    int array[10] = {1, 2};
    assert(0 == find<int>(array, 10, 1));
    assert(FALSE == find<int>(array, 10, 10));
}
int main()
{
    test1();
    test2();
    return TRUE;
}
目录
相关文章
|
存储 监控 算法
基于 C++ 哈希表算法实现局域网监控电脑屏幕的数据加速机制研究
企业网络安全与办公管理需求日益复杂的学术语境下,局域网监控电脑屏幕作为保障信息安全、规范员工操作的重要手段,已然成为网络安全领域的关键研究对象。其作用类似网络空间中的 “电子眼”,实时捕获每台电脑屏幕上的操作动态。然而,面对海量监控数据,实现高效数据存储与快速检索,已成为提升监控系统性能的核心挑战。本文聚焦于 C++ 语言中的哈希表算法,深入探究其如何成为局域网监控电脑屏幕数据处理的 “加速引擎”,并通过详尽的代码示例,展现其强大功能与应用价值。
346 2
|
存储 负载均衡 算法
基于 C++ 语言的迪杰斯特拉算法在局域网计算机管理中的应用剖析
在局域网计算机管理中,迪杰斯特拉算法用于优化网络路径、分配资源和定位故障节点,确保高效稳定的网络环境。该算法通过计算最短路径,提升数据传输速率与稳定性,实现负载均衡并快速排除故障。C++代码示例展示了其在网络模拟中的应用,为企业信息化建设提供有力支持。
519 15
|
存储 算法 数据处理
公司局域网管理中的哈希表查找优化 C++ 算法探究
在数字化办公环境中,公司局域网管理至关重要。哈希表作为一种高效的数据结构,通过哈希函数将关键值(如IP地址、账号)映射到数组索引,实现快速的插入、删除与查找操作。例如,在员工登录验证和设备信息管理中,哈希表能显著提升效率,避免传统线性查找的低效问题。本文以C++为例,展示了哈希表在局域网管理中的具体应用,包括设备MAC地址与IP分配的存储与查询,并探讨了优化哈希函数和扩容策略,确保网络管理高效准确。
|
监控 算法 数据处理
基于 C++ 的 KD 树算法在监控局域网屏幕中的理论剖析与工程实践研究
本文探讨了KD树在局域网屏幕监控中的应用,通过C++实现其构建与查询功能,显著提升多维数据处理效率。KD树作为一种二叉空间划分结构,适用于屏幕图像特征匹配、异常画面检测及数据压缩传输优化等场景。相比传统方法,基于KD树的方案检索效率提升2-3个数量级,但高维数据退化和动态更新等问题仍需进一步研究。未来可通过融合其他数据结构、引入深度学习及开发增量式更新算法等方式优化性能。
396 17
|
存储 监控 算法
基于跳表数据结构的企业局域网监控异常连接实时检测 C++ 算法研究
跳表(Skip List)是一种基于概率的数据结构,适用于企业局域网监控中海量连接记录的高效处理。其通过多层索引机制实现快速查找、插入和删除操作,时间复杂度为 $O(\log n)$,优于链表和平衡树。跳表在异常连接识别、黑名单管理和历史记录溯源等场景中表现出色,具备实现简单、支持范围查询等优势,是企业网络监控中动态数据管理的理想选择。
377 0
|
存储 算法 安全
企业员工数据泄露防范策略:基于 C++ 语言的布隆过滤器算法剖析[如何防止员工泄密]
企业运营过程中,防范员工泄密是信息安全领域的核心议题。员工泄密可能致使企业核心数据、商业机密等关键资产的流失,进而给企业造成严重损失。为应对这一挑战,借助恰当的数据结构与算法成为强化信息防护的有效路径。本文专注于 C++ 语言中的布隆过滤器算法,深入探究其在防范员工泄密场景中的应用。
410 8
|
存储 监控 算法
基于 C++ 哈希表算法的局域网如何监控电脑技术解析
当代数字化办公与生活环境中,局域网的广泛应用极大地提升了信息交互的效率与便捷性。然而,出于网络安全管理、资源合理分配以及合规性要求等多方面的考量,对局域网内计算机进行有效监控成为一项至关重要的任务。实现局域网内计算机监控,涉及多种数据结构与算法的运用。本文聚焦于 C++ 编程语言中的哈希表算法,深入探讨其在局域网计算机监控场景中的应用,并通过详尽的代码示例进行阐释。
382 4
|
机器学习/深度学习 存储 算法
基于 C++ 布隆过滤器算法的局域网上网行为控制:URL 访问过滤的高效实现研究
本文探讨了一种基于布隆过滤器的局域网上网行为控制方法,旨在解决传统黑白名单机制在处理海量URL数据时存储与查询效率低的问题。通过C++实现URL访问过滤功能,实验表明该方法可将内存占用降至传统方案的八分之一,查询速度提升约40%,假阳性率可控。研究为优化企业网络管理提供了新思路,并提出结合机器学习、改进哈希函数及分布式协同等未来优化方向。
488 0
|
存储 监控 算法
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
在数字化办公时代,公司监控上网软件成为企业管理网络资源和保障信息安全的关键工具。本文深入剖析C++中的链表数据结构及其在该软件中的应用。链表通过节点存储网络访问记录,具备高效插入、删除操作及节省内存的优势,助力企业实时追踪员工上网行为,提升运营效率并降低安全风险。示例代码展示了如何用C++实现链表记录上网行为,并模拟发送至服务器。链表为公司监控上网软件提供了灵活高效的数据管理方式,但实际开发还需考虑安全性、隐私保护等多方面因素。
423 0
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
|
存储 算法 安全
基于红黑树的局域网上网行为控制C++ 算法解析
在当今网络环境中,局域网上网行为控制对企业和学校至关重要。本文探讨了一种基于红黑树数据结构的高效算法,用于管理用户的上网行为,如IP地址、上网时长、访问网站类别和流量使用情况。通过红黑树的自平衡特性,确保了高效的查找、插入和删除操作。文中提供了C++代码示例,展示了如何实现该算法,并强调其在网络管理中的应用价值。

热门文章

最新文章