繁体   English   中英

找到第K个最小元素

[英]Find the Kth smallest element

谁能解释我做错了什么? 我想找到第k个最小的元素,但是出了点问题)

例如:我有无序阵列INT []微安= {2,9,4,13,11,7,8}; 我将“ 9”作为枢轴元素,并且在进行partiting(快速排序)的第一次迭代之后,将获得此数组{2,8,4,7,7,11,13,9}。 中间指针将显示在“ 11”处。 那到底是什么意思? 并非所有11个元素都大于11。11根本不在“正确的位置”。 但是,例如,我想返回第五个最小的element(11)。

枢轴不在正确的位置,您应该将枢轴放置在分区末端的正确位置,以找出枢轴的位置。 (您实际上不需要关心中间元素)然后可以使用此信息来计算第K个最小元素。 假设枢轴位于分区末尾的第x个索引处;

K = x =>  pivot is the right answer
K < x =>  the answer is in the left partition, search left partition  
K > x =>  the answer is in the right partition, search right partition 

我在代码中发现了一个错误:在分区部分交换了两个元素后,我像快速排序一样移动了指针(左++,右-),但不应该这样做。

谢谢你们的参与!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM