寻找第n大的元素

来源:互联网 发布:轻小说 淘宝店 编辑:程序博客网 时间:2024/05/01 06:02

昨天看到一个题目,“寻找给定数组中第二大的元素”。这个很好考虑:假如第二大的元素是k,那么遍历整个数组大于k的元素数必然为1. 固有以下代码:

   for(i =0;i<10;i++) {      flag = 0;      for(j=0;j<10;j++)    {      if(arr[i] < arr[j])         flag++;      if(flag > 1)         break;      if((flag == 1) && (j == 9))         {      printf("%d\n",arr[i]);   i=10;//结束外层循环         }     }  }

忽然想起来以前似乎看到过有问“寻找数组第n大元素的问题”,就可以把上面的推广下:

int findnbig(int array[],int m,int n){   int i,j,flag;     for(i = 0;i < m;i++)   {      flag = 0;      for(j = 0;j < m;j++)    {      if(array[i] < array[j])         flag++;      if(flag > n-1)         break;      if((flag == n-1) && (j == m-1))         return array[i];    }   }}

回头再写个算法时间空间复杂度分析,我觉得我这种方法应该是比较快的吧。

原创粉丝点击