微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

寻找无序数组中的第K大数

利用快速排序的思想,其中K从1开始
  1. int quicksort(int * x , int l ,87); font-weight:bold; background-color:inherit">int r ,87); font-weight:bold; background-color:inherit">int k)  
  2. {  
  3.     if(l == r && k==1)return x[l];  
  4.     int i , j ;  
  5.     for(i=l-1 , j=l;j<r;j++)      
  6.         if(x[j]<x[r])std::swap(x[++i] , x[j]);  
  7.     std::swap(x[++i] , x[r]);  
  8.     if(k==(i-l+1))return x[i];  
  9.     if(k<=(i-l))return quicksort(x , l , i-1 , k);  
  10.     if(k>(i-l+1))  }  

例如寻找5,2,6,3中的第3大数,排好序后变为2,3,5,故结果为5,可以利用上述函数cout<< quicksort(x,3)<<endl;
注意数组从0开始,

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐