数据结构算法每日一练(十一)链表直接插入排序
难度:⭐⭐⭐
题目: 在链式存储结构上设计直接插入排序算法
难度: ⭐⭐
题目:一个公司有几万名在职员工,请设计一个排序算法,对公司所有员工的年龄进行排序,要求时间效率$O(n)$。可以使用辅助内存,但使用辅助空间不得超过$O(1)$
难度: ⭐⭐
题目: 已知一个带有表头结点的单链表,假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数
第k个位置上的结点(k为正整数)。若查找成功,算法输出该结点的data域的值,并返回1;否则,只返回0。要求:
(1)描述算法的基本设计思想。
(2)描述算法的详细实现步骤。
(3)根据设计思想和实现步骤,采用程序设计语言描述算法(使用C、C++或Java语言实现),关键之处请给出简要注释。
难度: ⭐⭐
题目:下面是给定容量为MAX的使用循环数组实现队列的代码片段,其中T是队列中元素类型。
static int const MAX = 256; //队列的最大容量
static T* data; //循环数组,队列元素存储在此
static 其他必要数据;
(1)请给出循环数组实现队列所需的其他必要数据的定义;
(2)请使用循环数组实现队列的下述六个功能函数,请首先用语言描述实现的方法,再给出C/C++语言的具体实现。
难度: ⭐⭐
题目:给定一个含n(n≥1)个整数的数组A,请设计一个在时间上尽可能高效的算法。找出数组中未出现的最小正整数。例如,数组{-5,3,2,3}
中未出现的最小正整数是1;数组{1,2,3}中未出现的最小正整数是4。要求:
1)给出算法的基本设计思想。
2)根据设计思想,来用C或C++语言描述算法,关键之处给出注释。
3)说明你所设计算法的时问复杂度和空问复杂度。