当前位置:首页 » 操作系统 » 数据结构算法问题

数据结构算法问题

发布时间: 2023-09-15 03:10:02

Ⅰ 数据结构有哪些基本算法

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。

可以理解为:程序设计 = 数据结构 + 算法

数据结构算法具有五个基本特征:输入、输出、有穷性、确定性和可行性。

1、输入:一个算法具有零个或者多个输出。以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件。后面一句话翻译过来就是,如果一个算法本身给出了初始条件,那么可以没有输出。比如,打印一句话:NSLog(@"你最牛逼!");

2、输出:算法至少有一个输出。也就是说,算法一定要有输出。输出的形式可以是打印,也可以使返回一个值或者多个值等。也可以是显示某些提示。

3、有穷性:算法的执行步骤是有限的,算法的执行时间也是有限的。

4、确定性:算法的每个步骤都有确定的含义,不会出现二义性。

5、可行性:算法是可用的,也就是能够解决当前问题。

数据结果的基本算法有:

1、图搜索(广度优先、深度优先)深度优先特别重要

2、排序

3、动态规划

4、匹配算法和网络流算法

5、正则表达式和字符串匹配

6、三路划分-快速排序

7、合并排序(更具扩展性,复杂度类似快速排序)

8、DF/BF 搜索 (要知道使用场景)

9、Prim / Kruskal (最小生成树)

10、Dijkstra (最短路径算法)

11、选择算法

Ⅱ 数据结构 设计高效算法问题

// 要求是删除顺序表中在范围[x, y]内的元素。
// 按常规思路,每删除一个顺序表元素,则要将其后的元素整体前移一个位置。这种算法用到了双重for循环,时间复杂度为O(n^2)。
// 以下的算法只用到了单重for循环,时间复杂度为O(n)。原理是把所有不在范围[x, y]内的元素依次保存到顺序表的前部,而不处理本来要删除的、在范围[x, y]内的元素。当把所有不需要删除的元素都保存到了顺序表前部,只需要重新设置一下顺序表的长度为“前部”的最大下标+1,就模拟了删除操作。

void fun(SqList *&L, ElemType x)
{
// i为循环计数器。
// j为不需要删除的元素个数,初始化为0。
int i, j = 0;

// 依次遍历顺序表的每个元素
for (i = 0; i < L->length; ++i)
{
// 只处理不需要删除的元素,即不属于区间[x, y]的元素
if (!(L->data[i] >= x && L->data[i] <= y))
{
// 每找到一个不需要删除的元素,就把该元素保存到下标j的位置。
L->data[j] = L->data[i];
// 随后令j自增1。之前j代表的是处理后的顺序表的最大下标,现在j代表的是处理后的顺序表的长度。由于下标从0开始,所以长度永远比最大下标大1。
++j;
}
}

// 设置顺序表的长度为j,这样以后遍历顺序表只能访问前j个元素。即使下标j之后可能还存在属于[x, y]的元素,但是不会访问到它们,自然相当于“删除”了。
L->length = j;
}

Ⅲ 设计一个好的算法通常要考虑哪些要求

数据结构中评价一个好的算法,应该从四个方面来考虑,分别是:

一、算法的正确性。

二、算法的易读性。

三、是算法的健壮性。

四、是算法的时空效率(运行)。

算法的设计取决于数据(逻辑)结构,算法的实现取决于所采用的存储结构。数据的存储结构本质上是其逻辑结构在计算机存储器中的实现。为了全面反映一个数据的逻辑结构,它在内存中的影像包括两个方面,即数据元素之间的信息和数据元素之间的关系。

不同的数据结构有相应的操作。数据的操作是在数据的逻辑结构上定义的操作算法,如检索、插入、删除、更新和排序。

(3)数据结构算法问题扩展阅读

该算法的一般性质包括:

1.通用性对于任何符合输入类型的输入数据,都可以根据算法解决问题,并且包保证了计算结构的正确性。

2.算法的每一条指令都必须能够被人或机器执行。

3.确定性算法应该在每一步之后都有明确的下一步指示。也就是说,确保每个步骤都有下一步行动的指示,不缺少或只包含含糊的下一步行动指示。

4.有限算法的执行必须在有限步结束。

Ⅳ 数据结构中算法分析的问题

第一个第二个问题,就相当于你高中学的f(x),没什么实际意义,也不用纠结
为什么用T表示呢,代表时间

而一般所说的时间复杂度,都是用大O表示的
你学过函数应该知道,次数最高的那项对函数的增长影响最大,所以这里可以忽略其他低次项
前面的系数也可以省去,对于这个程序的就是O(n2)

热点内容
电子商务搭建服务器的模式 发布:2025-01-24 19:15:13 浏览:152
电脑怎么连接服务器存储 发布:2025-01-24 19:13:32 浏览:348
qq邮箱传文件夹怎么传 发布:2025-01-24 19:03:22 浏览:762
a5手动挡有哪些配置 发布:2025-01-24 19:03:10 浏览:415
萌点星球安卓怎么修改砖石 发布:2025-01-24 19:02:08 浏览:391
php远程连接mysql数据库 发布:2025-01-24 19:00:37 浏览:345
云计算加密 发布:2025-01-24 18:50:25 浏览:176
简单的c语言程序实例 发布:2025-01-24 18:44:42 浏览:100
怎样创建数据库 发布:2025-01-24 18:42:37 浏览:461
drupal拒绝访问 发布:2025-01-24 18:34:47 浏览:271