求数据结构C#语言描述的文档!!!

求数据结构C#语言描述的文档!!!,第1张

1.数据结构是一门研究非数值计算的程序设计问题中计算机的 A 以及它们之间的 _ B 和运算等的学科。

① A 数据元素 B 计算方法 C 逻辑存储 D 数据映象

② A 结构 B 关系 C 运算 D 算法

2.数据结构被形式地定义为(K,R),其中K是 B 的有限集,R是K上的 A 有限集。

① A 算法 B 数据元素 C 数据 *** 作 D 逻辑结构

② A *** 作 B 映象 C 存储 D 关系

3.在数据结构中,从逻辑上可以把数据结构分成____C____。

A 动态结构和静态结构 B 紧凑结构和非紧凑结构

C 线性结构和非线性结构 D 内部结构和外部结构

4.算法分析的目的是 C ,算法分析的两个主要方面是 A 。

① A 找出数据结构的合理性 B 研究算法中的输入和输出的关系

C 分析算法的效率以求改进 D 分析算法的易懂性和文档性

② A 空间复杂度时间复杂度 B 正确性和简单性

C 可读性和文档性 D 数据复杂性和程序复杂性

5.计算机算法指的是 C ,它必须具备输入、输出和 C 等5个特性。

① A 计算方法 B 排序方法

C 解决问题的有限运算序列 D 调度方法

② A 可执行性、可移植性和可扩充性

B 可行性、确定性和有穷性

C 确定性、有穷性和稳定性

D 易读性、稳定性和安全性

三、填空题

1.下面程序段的时间复杂度是___O(nm)____。

For (i=0;i<n;i++)

For (j=0;j<m;j++)

A[i][j]=0;

2.下面程序段的时间复杂度是___O(n^(1/2))____。

i=s=0

While(s<n)

{

i++; / i=i+1 /

s+=i; / s=s+i /

}

3.下面程序段的时间复杂度是___O(n^2)____。

s=0;

for (i=0;i<n;i++)

for (j=0;j<n;j++)

s+=B[i][j];

sum=s;

4.下面程序段的时间复杂度是__O(log3 N)(注:对N取3的对数)_____。

i=1;

While (i<=n)

i=i3;

常见的 查找算法的时间复杂度:

线性结构的查找的时间复杂度,如 二分查找(用于已经排好序的数据,如已序的数组);O(n)

非线性结构的查找的时间复杂度,如 二叉查找树 ;O(log n)

排序类别 时间复杂度 空间复杂度 稳定

1 插入排序 O(n2) O(1) √

2 希尔排序 O(n2) O(1) × //Shell(希尔)排序是基于插入排序的,时间效率比插入、选择、冒泡高,但又比快速排序低点;

3 冒泡排序 O(n2) O(1) √

4 选择排序 O(n2) O(1) ×

5 快速排序 O(Nlogn) O(logn) ×

6 堆排序 O(Nlogn) O(1) ×

7 归并排序 O(Nlogn) O(n) √

冒泡排序、插入排序、归并排序是稳定的,算法时间复杂度是O(n ^2);

选择排序、快速排序、堆排序、希尔排序都是 不稳定的;

算法的时间复杂度

一、 时间复杂度定义

定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数T(n)称为这一算法的“时间复杂性”。

当输入量n逐渐加大时,时间复杂性的极限情形称为算法的“渐近时间复杂性”。

二、大O表示法

我们常用大O表示法表示时间复杂性,注意它是某一个算法的时间复杂性。大O表示只是说有上界,由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯表示前者。此外,一个问题本身也有它的复杂性,如果某个算法的复杂性到达了这个问题复杂性的下界,那就称这样的算法是最佳算法。

“大O记法" :在这种描述中使用的基本参数是n,即问题实例的规模,把复杂性或运行时间表达为n的函数。这里的“O”表示量级(order),比如说“二分检索是O(logn)的”,也就是说它需要“通过logn量级的步骤去检索一个规模为n的数组”记法O ( f(n) )表示当n增大时,运行时间至多将以正比于f(n)的速度增长。

这种渐进估计对算法的理论分析和大致比较是非常有价值的,但在实践中细节也可能造成差异。例如,一个低附加代价的O(n2)算法在n较小的情况下可能比一个高附加代价的O(nlogn)算法运行得更快。当然,随着n足够大以后,具有较慢上升函数的算法必然工作得更快。

O(1)

Temp=i;i=j;j=temp;

以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。

O(n^2)

21交换i和j的内容

sum=0; (一次)

for(i=1;i<=n;i++) (n次)

for(j=1;j<=n;j++)(n^2次)

sum++; (n^2次)

解:T(n)=2n^2+n+1 =O(n^2)

没错,n=4的时候,log2n=2。

但是,你有没有注意到,时间复杂度是o(log2n),不是log2n。你不能无视符号"o"。

这个符号的意思是:时间复杂度不会比log2n大很多。通俗的说:就是时间复杂度或者和log2n在同一数量级,或者比log2n小。

以上就是关于求数据结构C#语言描述的文档!!!全部的内容,包括:求数据结构C#语言描述的文档!!!、分析下面的代码的时间复杂度,使用大O阶记法表示、下面程序段的时间复杂度是 i=1; while(i<=n) i=i*2等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9308736.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存