数据结构与算法 02:特性 & 设计要求

简介: 数据结构与算法 02:特性 & 设计要求

算法是指解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每个指令表示一个或多个操作


算法的特性


算法有以下几种特性


  • 输入:算法具有零个或多个输入
  • 输出:算法至少有一个或多个输出
  • 有穷性:算法在有限的步骤之后会自动结束而不会无限循环,并且每个步骤在可接受的时间范围内完成
  • 确定性:算法中的每一步都有确定的含义,不会出现二义性
  • 可行性:算法的每一步都是可行的,即每一步都能通过执行有限次数完成


算法的设计要求


衡量一个算法,有以下几个方法


  • 正确性:是指算法至少具有输入、输出和加工处理无歧义,并且可以正确反映问题的需求,以及正确得到问题的答案,所谓的正确一共有四个层次:


  • 没有语法错误
  • 能够根据正确的输入的值得到满足要求的输出结果
  • 能够根据错误的输入的值得到满足要求的输出结果
  • 对于精心设计且极其刁钻的测试数据都能满足要求的输出结果


  • 可读性:便于阅读、理解和沟通


  • 健壮性:当输入的数据不合法时,算法也能给出相关的处理,而不是产生异常或者莫名其妙的错误,可以简单理解为:算法的容错能力


  • 时间效率高和存储量低:对算法进一步优化,尽量慢速时间效率高和空间存储量低的需求


相关文章
|
6月前
|
算法 Java 程序员
【算法训练-队列 一】【结构特性】用两个栈实现队列
【算法训练-队列 一】【结构特性】用两个栈实现队列
61 0
|
6月前
|
算法 数据处理 C++
【C++ 20 新特性 算法和迭代器库的扩展和泛化 Ranges】深入浅出C++ Ranges库 (Exploring the C++ Ranges Library)
【C++ 20 新特性 算法和迭代器库的扩展和泛化 Ranges】深入浅出C++ Ranges库 (Exploring the C++ Ranges Library)
754 1
|
消息中间件 存储 缓存
深入了解队列数据结构:定义、特性和实际应用
深入了解队列数据结构:定义、特性和实际应用
|
存储 算法 程序员
深入探讨栈数据结构:定义、特性和应用
深入探讨栈数据结构:定义、特性和应用
|
23天前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
38 3
|
1月前
|
存储 算法 分布式数据库
【初阶数据结构】理解堆的特性与应用:深入探索完全二叉树的独特魅力
【初阶数据结构】理解堆的特性与应用:深入探索完全二叉树的独特魅力
|
6月前
|
缓存 算法 Java
Linux内核新特性年终大盘点-安卓杀后台现象减少的背后功臣MGLRU算法简介
MGLRU是一种新型内存管理算法,它的出现是为了弥补传统LRU(Least Recently Used)和LFU(Least Frequently Used)算法在缓存替换选择上的不足,LRU和LFU的共同缺点就是在做内存页面替换时,只考虑内存页面在最近一段时间内被访问的次数和最后一次的访问时间,但是一个页面的最近访问次数少或者最近一次的访问时间较早,可能仅仅是因为这个内存页面新近才被创建,属于刚刚完成初始化的年代代页面,它的频繁访问往往会出现在初始化之后的一段时间里,那么这时候就把这种年轻代的页面迁移出去
|
5月前
|
存储
数据结构学习记录——什么是堆(优先队列、堆的概念、最大堆最小堆、优先队列的完全二叉树表示、堆的特性、堆的抽象数据类型描述)
数据结构学习记录——什么是堆(优先队列、堆的概念、最大堆最小堆、优先队列的完全二叉树表示、堆的特性、堆的抽象数据类型描述)
115 2
|
4月前
|
算法
Ngnix02 --- Ngnix的功能特性及常见功能,Ngnix常用的功能模块,有不同算法,根据不同算法进行转发,ip_hash、url_hash、fair,核心组成 ngnix二进制可执行文件
Ngnix02 --- Ngnix的功能特性及常见功能,Ngnix常用的功能模块,有不同算法,根据不同算法进行转发,ip_hash、url_hash、fair,核心组成 ngnix二进制可执行文件
|
6月前
|
存储 JavaScript
ES6+新特性-Symbol与Set/Map数据结构
ES6 引入了三种新的数据结构:Symbol、Set和Map。Symbol是唯一且不可变的值,常用于定义对象的独特属性;Set存储不重复值,适合数组去重;Map则是键值对集合,键可为任意类型,提供了更灵活的存储方式。这些新数据结构提供了更高效的操作手段,分别解决了属性命名冲突、数据去重和复杂键值对存储的问题。示例展示了如何使用Symbol、Set和Map进行基本操作。
下一篇
无影云桌面