- 该问题的一种解法就是将这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++)
{
if (temp[k-1] < original[i])
{
temp[k - 1] = original[i];
BubbleSort(temp);