给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,请设计一个最坏时间复杂度为O(n)的算法,并对其时间复杂度进行分析说明。
举一反三
- 在n(n>1)个元素的顺序表中,算法时间复杂度为O(1)的运算是 A: 访问第i个元素(2≤i≤n)并求其前驱元素 B: 在第i个元素之后插入一个新元素 C: 删除第i个元素 D: 将n个元素递增排序
- 有一严格升序的整型数组A,元素个数为n。现将其前k(0≤k≤n)个元素整体移动到数组后面,得到数组B,使B数组的前n-k个元素恰好是A数组的后n-k个元素,B数组的后k个元素恰好是A数组的前k个元素,且前后两部分的内部升序仍保持不变。请设计一个算法在B数组中查找某个给定元素value。算法设计在函数searchValue中,函数头可采用searchValue(int B[ ], int value)。那么你设计的高效算法的时间复杂度是 A: O(n) B: O(n^0.5) C: O(log n) D: O((log n)^2)
- 设线性表有n个元素且采用顺序存储表示,算法的时间复杂度为O(1)的操作是()。 A: 访问第i个元素和求第i个元素的直接前趋(2≤i≤n) B: 在第i(1≤i≤n)个元素后面插入一个新元素 C: 删除数组第i个元素 D: 顺序查找与给定值k相等的元素
- 在n个元素的顺序表中,算法的时间复杂度是O(1)的操作是()。 A: 访问第i个元素(2≤i≤n)及其前驱元素 B: 在第i个元素(1≤i≤n)后插入一个新元素 C: 删除第i个元素(1≤i≤n) D: 将n个元素从小到大排序
- 在n(n>1)个元素的顺序表中,算法时间复杂度为O(1)的运算是 A: 访问第i个元素(2≤i≤n)并求其前驱元素 B: 在第i个元素之后插入一个新元素 C: 删除第i个元素 D: 将n个元素递增排序