数据结构(急求)

__凡凡凡凡__哟喂 2019-03-19 08:42:50
一组随机数,求出一组数据中按值大小排在第k位的数据(不需要排序) 急求
...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tongshou 2019-03-19
  • 打赏
  • 举报
回复
如果数据数量不大,可以使用 std::set<int> A 的方法。

Mr.Wang-USTC 2019-03-19
  • 打赏
  • 举报
回复
这好像可以用计算名次的算法来解决问题 C++代码 template<class T> void rank(T a[], int n,int r[]) { for (int i =1;i <n;i++) { for (int j=0;j<i;j++) { if(a[i] >=a[j]) r[i]++; r[j]++; } } } n为数组元素的个数,假如原来的数组为a=[1,4,7,2,3,9],后得到的名次数组r=[0,3,4,1,2,5] ,数越大排名越高。假设你需要找到排第k=5位的数据。你只需要在名次数组中找到数字n-k ,然后从原来的数组中找到a[r[n-k]]就可以了。根据上面的例子,找到大小排在第3位的数据(应该是3),r[6-4]=r[2]=4, a[4]=3。 找到答案3。(注意,您的题目要求应该是从大到小,数越大,排明越靠前,而名次数组是数越大,排名越靠后,所以有n-k的操作)
  • 打赏
  • 举报
回复
顶一下我自己😭😭😭😭😭

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧