数据结构day11

算法:

    数据结构中的算法,指的是数据结构所具备的功能

    解决特定问题的方法,它是前辈们的一些优秀的经验总结

    一个算法应该具有以下五个重要的特征:

    有穷性:算法的有穷性

    确切性:算法的每一步骤必须又确切的定义;

    输入项: 一个算法有0个或多个输入;

    输出项:

    可行性:

    如何评价一个算法:

        时间复杂度:由于计算机的性能不同,无法准确地衡量出算法执行所需要地时间

            因此我们用算法的执行次数来代表算法的时间负责度

            一般使用 O(公式) 一般忽略常数

    常见的时间复杂度:

        //  O(1)

        printf("%d",i);

        //  O(logn)

        for(int i=n; i>=0; i/=2)

        {

            printf("%d",i);

        }

        //  O(n)  O(N)

        for(int i=0; i<10; i++)

        {

            printf("%d",i);

        }

        //  O(nlogn)

        for(int i=0; i<10; i++)

        {

            for(int j=n; j>=0; j/=2)

            {

                printf("%d",i);

            }

        }

        //  O(n^2)

        for(int i=0; i<10; i++)

        {

            for(int j=0; j<10; j++)

            {

                printf("%d",i);

            }

        }

    空间复杂度:

        执行一个程序所需要的内存空间大小,是对一个算法在运行过程中临时占用存储空间大小的衡量

        一般只要算法不涉及动态分配的内存以及递归,通常空间复杂度为O(1)

        例如: 求第n个斐波那数列的递归实现算法 空间复杂度O(n)

    注意:对于一个算法而言,其时间复杂度与空间复杂度往往是相互影响的,没有唯一的标准,需要结合实际综合考虑

分治:

    分而治之,把一个大而复杂的问题,分解成很多小而简单的问题

    用计算机强大的计算能力来解决问题

    实现分治的方法:循环、递归

查找算法:

    顺序查找

        对待查找的数据没有要求,从头到尾逐一比较,在校规模的查找中较为常见,查找效率较低

        时间复杂度: O(n)

    二分查找(折半查找)

        带查找的数据必须有序,从数据中间位置开始比较查找,如果中间值比key小,则左边继续经行二分查找,反之从右边进行。

        时间复杂度: O(logN)

    块查找(权重查找)

        是一种数据处理的思想,不是一种特定的算法,当数据量非常多时,可以先把数据先分块处理

        然后再根据分块的条件进行查找,例如英文字典

    哈希查找

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值