好吧,我有一个任务找到使用几种不同的方法列表中的第K个最小元素....查找使用分区列表中的第K个最小的元素 - 帮助我理解
第一种方法是对列表进行排序,然后返回第K个最小元素。容易,我的心态是说列表= 10个元素,排序列表按升序排列,然后在第10位返回元素
下一个方法使用快速排序的分区:
“第二种算法是应用Quicksort中使用的分区程序该过程对数组进行分区,以便所有小于某个数据透视表元素的元素都位于数组之前,并且所有大于该数据透视表元素的元素都位于数组之后。我们可以通过分区来解决选择问题,直到数据项位于第k个时隙为止,如果k小于pivotposition,则递归地划分左侧子数组,并且通过递归地划分右侧子数据库ay如果k大于pivotposition。 。当k = pivotposition,我们完成”
说我有10项的列表:
3 8 9 2 4 5 1 7 10 6,其中5是枢转..我知道我通常将具有2个阵列
3 2 4 1和8 9 7 10 6
,但我不理解的是:“我们可以通过分区解决选择问题,直到枢轴产品在第k个插槽“。
什么是第k个插槽?对我来说,我一直在想,kth =数组的长度,所以在这种情况下,10.其中有6个值,这显然不是最低的......并且是不正确的。
有人可以使用这个样本数组,只是告诉我这个算法的含义是什么,以及它如何找到第k /最小的元素?谢谢
您重新定义_k_ midway:首先_k_是搜索元素的顺序(potentialall y小于阵列的长度,例如当从1开始计数时,来自10元素数组的第二小元素的k = 2,然后你说_k_是数组的长度。第k个槽只是阵列中的第k个位置。 – 2012-03-03 02:16:34
好吧,清除了一些误解..但我仍然困惑。说我的样品数组,我们说我想找到第3个最小的元素,并且数据透视总是第一个项目..我想我不明白如何知道“什么”是第三小元素,直到数组完全排序?我想我只是需要有人来展示给我,所以我明白... – user1189352 2012-03-03 02:23:28
我怎么知道如果K小于或大于枢轴位置? – user1189352 2012-03-03 02:24:53