当前位置:首页 » 操作系统 » 下列算法的

下列算法的

发布时间: 2022-01-24 15:12:48

㈠ 1.3 请说明下列算法的时间复杂度.

这个首先要明确一点,只用到比较的排序算法最低时间复杂度是O(nlogn),而像桶排这样的只需要O(R)(R为桶的大小)。
为了证明只用到比较的排序算法最低时间复杂度是O(nlogn),首先要引入决策树。
首先决策树是一颗二叉树,每个节点表示元素之间一组可能的排序,它予以京进行的比较相一致,比较的结果是树的边。
先来说明一些二叉树的性质,令T是深度为d的二叉树,则T最多有2^片树叶。
具有L片树叶的二叉树的深度至少是logL。
所以,对n个元素排序的决策树必然有n!片树叶(因为n个数有n!种不同的大小关系),所以决策树的深度至少是log(n!),即至少需要log(n!)次比较。

㈡ 请说明下列算法的时间复杂度。

(1)O(n)。外层for循环O(n);内层for循环O(1),因为是常数个循环;x+=2为O(1)。则总的时间复杂度为O(n)。
(2)O(n^2)。外层for循环O(n);内层for循环O(n);两者都是线性时间复杂度。x++为O(1)。则总的时间复杂度为O(n^2)。

㈢ 简述下列算法的功能

队列Q中的元素反转顺序。例如,设刚开始队列Q中元素为1、2、3、4,调用该方法后,队列Q中元素顺序变为4、3、2、1。

㈣ 请说明下列算法的时间复杂度

你想问的具体问题是??
如果你是想问这个自定义函数运行的过程:
(1)
自定义函数接收来自主函数的参数
定义整型变量i,x=0
i=0
如果i<n+1
执行for括号里面的内容:for(j=1;j<8;j++)遇到for语句,同理
j=1,如果j<8,执行x+=2;然后执行for语句j++,再判断j<8,执行x+=2、、、、、、、、、
直到j<8不成立,跳出最里面的for语句

执行外面的for语句,i++
执行for括号里面的内容:for(j=1;j<8;j++)遇到for语句,同理
j=1,如果j<8,执行x+=2;然后执行for语句j++,再判断j<8,执行x+=2、、、、、、、、、
直到j<8不成立,跳出最里面的for语句

直到判断i<n+1条件否定
退出自定义函数,返回到主函数

这够详细了吧,同理(2)也是这样类似的过程,希望这是你要的答案,记得给点奖励我

㈤ 下列算法的功能是什么

实现的功能:把L的第一个节点移动到最后一个节点的位置。这样看就能好理解了,加了一个大括号。
LinkList testl(LinkList L)
ListNode *p,*p;
if(L&&L->next)
{
q=L; /*保存L最初的,第一个节点位置,在后面需要用到*/

L=L->next;p=L;
while(p->next)
{
p=p->next;
} /*找L的最后节点位置*/
p->next=q;q->next=NULL;
return L;
}

㈥ (数据结构)简述下列算法的功能

整个函数的功能是“把一个LinkList倒序输出”。分析: LStackTP Is,p;DataType x;InitStack(&Is);p=head->next;while(p!=null){Push(&Is,p->data);p=p->next;}【以上一段程序是用于初始化Stack(栈),同时通过while循环把数据一个个压入堆栈。因为栈是“先进后出的”】 while(!EmptyStack(&Is)){Pop(&Is,&x);p->data=x;p=p->next;}【以上一段程序就是从堆栈中把数据逐一弹出,最先弹出的是最后一次压入堆栈的数据】

㈦ 下列关于算法的说法中,正确的是

正确的说法是 D. 算法是解决问题过程所需的有限步骤。
算法的性质规定了算法必须满足以下几点:
1 具体(能翻译成机器指令)
2 明确(无歧义)
3 正确(对任何输入能给出正确的结果)
4 步数有限(任何情况下总能停机,不会陷入死循环)

㈧ 分析下列算法的复杂度

答:主要看双重循环部分,外层循环执行n次,内层循环执行m次,总共执行次数为m×n次,对应时间复杂度为O(n^2)。

㈨ 下列关于算法的说法中,正确的是()A.算法是某个问题的解决过程B.算法可以无限不停地操作下去C.

由算法的概念可知:
算法是某个问题的解决方法,而不是某个问题的解决过程,故A不正确;
算法是在有限个步骤内解决问题,不可以无限不停地操作下去,故B不正确;
算法的每一步操作都是明确的,算法执行后的结果是确定的,故C不正确;
解决某类问题的算法可能有多个,算法是不唯一的,故D正确.
故选D.

㈩ 下列算法的功能是什麽

这个函数把你传入的L结点移动到了最后那个位置。
同时,由于不知道L前面的结点,所以L前面的结点将全部丢失。
也就是新建了一个以L+1为起点,后面不变,最后一个是L的链表。
过程如下:
Q=L;L=L->next;P=L; 这个你肯定是能看懂的。
我们定义传入的L为Head,这样方便描述。这一句后
Q=Head, L = Head +1, P = Head
然后那个while循环的作用是让P = End -1;(这里的End的意思是最后那个Null的结尾)

然后,P->Next = Q,这就相当于吧链表的end -1 和head连起来了。这时候是个圆圈。
然后q->next = null,把q和L中间的联系断开了,这时候又是个普通的链表了。这个链表的起始是L,结尾是Q

---很奇怪的一个函数。
可能作者的原意是把一个链表的首结点移到最后吧。
这就要求函数的使用者必须传入链表的首结点。
顺便,函数的参数应该是LinkList* L
如果没有*的话,这个函数会编译错误。

热点内容
gon引擎自动回收脚本 发布:2024-09-20 05:39:39 浏览:246
好医生连锁店密码多少 发布:2024-09-20 05:09:38 浏览:15
魔兽脚本代理 发布:2024-09-20 05:09:35 浏览:98
python登陆网页 发布:2024-09-20 05:08:39 浏览:757
安卓qq飞车如何转苹果 发布:2024-09-20 04:54:30 浏览:178
存储过程中in什么意思 发布:2024-09-20 04:24:20 浏览:315
php显示数据 发布:2024-09-20 03:48:38 浏览:501
源码安装软件 发布:2024-09-20 03:44:31 浏览:354
入门编程游戏的书 发布:2024-09-20 03:31:26 浏览:236
e盒的算法 发布:2024-09-20 03:30:52 浏览:144