- 该问题的一种解法就是将这N个数读进一个数组中,再通过某种简单的算法,比如冒泡排序,以递减的顺序将数组排序,然后返回位置K上的元素。
- 稍微好一点的算法可以先把前K个元素读入数组并降序排序。接着,将剩下的元素再逐个读入。当新元素被读到时,如果它小于数组中的第K个元素则忽略,否则就将其方到数组正确的位置上,同时将数组中的一个元素挤出数组。当算法终止时,位于第K个位置上的元素作为答案返回。
方法二的测试代码?
//找出N个数中第K大的数
static float FindTheKLargestNumber(float[] original,int k)
{
float[] temp = new float[k];
for (int i = 0; i < k; i++)
{
temp[i] = original[i];
}
BubbleSort(temp);
for (int i = k ; i < original.Length; i++)

这篇博客介绍了如何高效地找出N个数中第K个最大的值。首先提出通过冒泡排序整个数组得到解决方案,然后提出优化方法:先对前K个元素排序,再逐个比较剩余元素,如果大于第K个元素则替换并重新排序。最后提供了具体的C#代码实现,包括冒泡排序和寻找第K大值的函数。
最低0.47元/天 解锁文章
5414

被折叠的 条评论
为什么被折叠?



