本文想说的是k=2的这种特殊情况。对于k是其他值,我想到的最直接的方法就是,将数组data排序,然后返回第k大的数就可以了。对于k=2情况的处理如下:
int Find(int data[],int n) { int sec_num = -32767; int i; int max = data[0]; //假定第一个数是最大值 for(i = 1; i < n; ++i) { if(data[i] > max)//如果data[i]比max大,那么说明第二大的为max { sec_num = max; max = data[i]; } else { if(data[i] > sec_num)//如果data[i]比sec_num大,则说明sec_num为data[i] sec_num = data[i]; } } return sec_num; }
找第k大的数
