美文网首页
选择问题

选择问题

作者: despone | 来源:发表于2017-03-18 15:39 被阅读0次

选择问题是我看数据结构与算法分析C中的第一个问题,问题是在一个未排序的数组中,找出第K大的数。对这个问题最直观的解法是排序后输出相应的数,但是在超大数据下,该算法时间复杂度取决于排序的算法,最快也是不能超过O(NlogN)的,因为排序最快就是O(NlogN),对此如何再次基础上优化呢?

如果需求的是最小的数,那么直接循环依次,就能找出最小的,也就是说选择问题的需要的时间是一定小于排序整个数组的,以快排为例的话,在选择了中间数左右已经分开后,如果中间的下标就是相应的需求的下标的话,就可以得出答案。

<pre>

encoding=utf8

def max_k(a):
k = len(a)//2
for index in range(k):
for rest in range(index+1, len(a)):
if a[index] < a[rest]:
a[index], a[rest] = a[rest], a[index]
return a[k-1]

def max_k2(a, k):
if len(a) == 0:
return "shuruweikong"

result, index = paixu(a)
if index == k:
    return result[k]
elif k < index:
    return max_k2(result[0:index], k)
elif k > index:
    return max_k2(result[index+1:], k-index-1)

def paixu(a):
p = a[0]
left = []
right = []
for item in a[1:]:
if item <= p:
left.append(item)
elif item > p:
right.append(item)
index = len(left)
return left+[p]+right, index

def main():
test = [5, 25, 7, 2, 4, 8, 34, 76, 23]
test2 = [5, 4, 7, 2, 3, 8]
k = len(test)//2
new_k = len(test) - k
print(max_k2(test, new_k))

if name == 'main':
main()
</pre>

以上是Py的代码,写的比较野,也不知道有没有BUG,仅供参考!
文章内容如有错误,请在评论区指出。

相关文章

  • 选择问题

    《生涯咨询与辅导》一书中,关于当代生涯辅导的主题之一是强调自由选择与责任承担。 书中是这样写的:“生涯辅导所面对的...

  • 选择问题

    选择问题是我看数据结构与算法分析C中的第一个问题,问题是在一个未排序的数组中,找出第K大的数。对这个问题最直观的解...

  • 选择问题

    高考又出成绩了,几家欢喜几家愁。 该选喜欢的专业?还是更有名的学校? 曾几何时,我是主张选专业的。 男怕入错行,女...

  • 问题,选择

    人生的悲剧往往是陷入了是非对错的情绪里,而忘记了去分清什么是我的课题,什么是你的课题。 如果我的课题带来的损失比你...

  • 选择的问题

    你会不会有一个时刻,觉得自己是一只干枯的丝瓜… 我现在就是…… 我已经陪伴孩子2个月又10天 我觉得特别的累 情绪...

  • 选择的问题

    爸爸说:你读了那么多书,该做选择的时候还是不知怎么选择。 我想成为什么样的人,什么是我的使命召唤,什么是人生的意义...

  • 《态度问题:问题之前的问题》

    《态度问题:问题之前的问题》 人有没有选择的自由? 有。 一个人有三次选择的自由: 1选择主动or被动 2选择战略...

  • 小白学习3D游戏建模问题汇总

    3D建模问题主要问题有:软件选择、软件学习、选择教程、解决问题、常用资源集合。 软件选择重要的是想用软件做什么?模...

  • 活动/任务选择问题

    给定n个活动,已知它们的起止时间,如何选择活动能够使得单个人能够完成最多数量的活动,假设单个人同一个时间只能做单个...

  • 诚信的选择问题

    我家里有从事计算机方面的工作,算是高薪的工作,这行靠能力,也靠人脉。 他待过两家公司,一家对待老员工,动不动就区别...

网友评论

      本文标题:选择问题

      本文链接:https://www.haomeiwen.com/subject/chnunttx.html