题目详情
当前位置:首页 > 计算机考试 > 中级软件设计师
题目详情:
发布时间:2024-01-17 19:44:19

[单项选择]在原始序列已经有序(升序或降序)的情况下, 算法的时间复杂度为O(n2)。

A. 堆排序
B. 插入排序
C. 快速排序
D. 归并排序

更多"在原始序列已经有序(升序或降序)的情况下, 算法的时间复杂度为O(n2"的相关试题:

[单项选择]直接插入序列在最好情况下时间复杂度为( )
A. O(log2n)
B. O(n)
C. O(n*log2n)
D. O(n2)
[填空题]

下面程序的功能是;将两个有序链表(降序捧序)合并为一个有序链表,函数merge(node *h1,node *h2)将由h1和h2分别指向的己排序的两个链表,合并为一个依然有序的链表。注意;对于数据大小相同的结点,都要保留在合并后的链表上。主函数产生两条已降序排序的链表,并输出合并后链表上的数据值.

例如,原链表上各结点的数据依次为;

h1:15,9,8,7,3

h2:15,12,10,7,3,2

合并后得到的新链表为;15,15,12, 10,9,8,7,7,3,3,2

【程序]

#include

struct node{

int data;

node*next;

};

node *merge(node *h1,node *h2)

{

if(h1==NULL) return h2;

if(h2==NULL) return h1;

node *h=NULL;

if(___(1)___){

h=h1;

h1=h1->next;

}

else{

h=h2;

h2=h2->next;

}

node *p=h;

while(___(2)___){

if(h1->data >=h2->data){

p->next=h1;

p=h1;

h1=h1->next;

}

else{

p->next=h2;

p=

[单项选择]数据库文件结构有多种形式,记录按照查找码值的升序或降序顺序排列存储的文件结构是()。
A. 堆文件
B. N序文件
C. 散列文件
D. 索引文件
[填空题]现有字母序列(D,W,A,J,C,Z,K,S,P),若采用快速排序的方法将这个序列按字母的升序进行重排,那么以第一个字母作为分界元素,完成第一次扫描的结果为 【5】
[填空题]在成绩表中,将所有记录先按课程号升序排序,再按分数降序排序的命令是 SELECT*FROM 成绩表 ORDER BY 【8】
[单项选择]若总是以待排序列的第一个元素作为基准元素进行快速排序,那么最好情况下的时间复杂度为()。
A. O(log2n)
B. O(n)
C. O(nlog2n)
D. O(n2)
[填空题]在成绩表中,将所有记录先按课程号升序排序,再按分数降序排序的命令是
SELECT*FROM 成绩表 ORDER BY 【8】
[填空题]在工资表中建立查询,先按照工资升序排列,若工资相同再按照职工号降序排列,SQL语句为: SELECT * FROM 工资表 ORDER BY 工资,职工号 【13】 。 选课表(学号,课程号,成绩)
[单项选择]已知两个长度分别为m和n的升序链表,若将它们合并为一个长度为m+n的降序链表,则最坏情况下的时间复杂度是
A. O(n)
B. O(m×n)
C. O(min(m,n))
D. O(max(m,n))
[简答题]一个长度为L(L≥1)的升序序列S,处在第[L/2]个位置的数称为s的中位数。例如,若序列S1:(11,13,15,17,19),则S1的中位数是15。两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若S2=(2,4,6,8,20),则S1和S2的中位数是11。现有两个等长升序序列A和B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列A和B的中位数。
要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++或Java语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度和空间复杂度。
[填空题]已知序列17,18,60,40,7,32,73,65,85,采用冒泡排序法对该序列作降序排序时,第4趟的结果是 【1】
[填空题]冒泡排序在最好情况下时间复杂度为 【3】
[简答题][说明]
冒泡排序算法的基本思想是:对于无序序列(假设扫描方向为从前向后,进行升序排列),两两比较相邻数据,若反序则交换,直到没有反序为止。一般情况下,整个冒泡排序需要进行众(1≤k≤n)趟冒泡操作,冒泡排序的结束条件是在某一趟排序过程中没有进行数据交换。若数据初态为正序时,只需1趟扫描,而数据初态为反序时,需进行n-1趟扫描。在冒泡排序中,一趟扫描有可能无数据交换,也有可能有一次或多次数据交换,在传统的冒泡排序算法及近年的一些改进的算法中[2,3],只记录一趟扫描有无数据交换的信息,对数据交换发生的位置信息则不予处理。为了充分利用这一信息,可以在一趟全局扫描中,对每一反序数据对进行局部冒泡排序处理,称之为局部冒泡排序。
局部冒泡排序的基本思想是:对于N个待排序数据组成的序列,在一趟从前向后扫描待排数据序列时,两两比较相邻数据,若反序则对后一个数据作一趟前向的局部冒泡排序,即用冒泡的排序方法把反序对的后一个数据向前排到适合的位置。扫描第—对数据对,若反序,对第2个数据向前冒泡,使前两个数据成为,有序序列;扫描第二对数据对,若反序,对第3个数据向前冒泡,使得前3个数据变成有序序列;……;扫描第i对数据对时,其前i个数据已成有序序列,若第i对数据对反序,则对第i+1个数据向前冒泡,使前i+1个数据成有序序列;……;依次类推,直至处理完第n-1对数据对。当扫描完第n-1对数据对后,N个待排序数据已成了有序序列,此时排序算法结束。该算法只对待排序列作局部的冒泡处理,局部冒泡算法的
名称由此得来。
以下为C语言设计的实现局部冒泡排序策略的算法,根据说明及算法代码回答问题1和问题2。
[变量说明]
#define N=100 //排序的数据量
typedef struct //排序结点
int key;
info datatype;
......
node;
node SortData[N]; //待排序的数据组
node类型为待排序的记录(或称结点)。数组SortData[]为待排序记录的全体称为一个文件。key是作为排序依据的字段,称为排序码。datatype是与具体问题有关的
[单项选择]已知关系:学生(学号,姓名,年龄),如果按年龄降序列出所有学生,并且相同年龄的学生按姓名升序排列。则排序子句应该是( )。
A. ORDER BY年龄,姓名
B. ORDER BY姓名,年龄
C. ORDER BY年龄DESC,姓名
D. ORDER BY姓名,年龄DESC
[单项选择]为学生表建立普通索引,要求按“学号”字段升序排列,如果学号(C,4)相等,则按成绩(N,3)升序排列,下列语句正确的是( )。
A. INDEX ON 学号,成绩 TO XHCJ
B. INDEX ON 学号+成绩 TO XHCJ
C. INDEX ON 学号,STR(成绩,3)TO XHCJ
D. INDEX ON 学号+STR(成绩,3)TO XHCJ

我来回答:

购买搜题卡查看答案
[会员特权] 开通VIP, 查看 全部题目答案
[会员特权] 享免全部广告特权
推荐91天
¥36.8
¥80元
31天
¥20.8
¥40元
365天
¥88.8
¥188元
请选择支付方式
  • 微信支付
  • 支付宝支付
点击支付即表示同意并接受了《购买须知》
立即支付 系统将自动为您注册账号
请使用微信扫码支付

订单号:

截图扫码使用小程序[完全免费查看答案]
请不要关闭本页面,支付完成后请点击【支付完成】按钮
恭喜您,购买搜题卡成功
重要提示:请拍照或截图保存账号密码!
我要搜题网官网:https://www.woyaosouti.com
我已记住账号密码