回 帖 发 新 帖 刷新版面

主题:help~~~~

读入n个不相同且不为0的数(1<=n<=100),不用排序,求出其中第r个大的数(1≤r≤n),即有r-1个数比它大,其余的数都比它小。
例如:输入3,14,22,15,17,6,其中第3个大的数为15。
[em18]

回复列表 (共19个回复)

11 楼

哈哈  那你的程序不是要很繁  傻瓜才这么干

12 楼

program el;
var a,b:array[1..100] of integer;
     i,j,r,n:integer;
     begin
     read(n,r);
     for i:=1 to n do begin read(a[i]); b[j]:=0 end;
     for i:=1 to n do for j:=1 to n do if a[j]<a[i] then b[j]:=b[j]+1;
     for i:=1 to n do if b[i]=r then write(a[i]:3);
     readln;readln;
     end.

13 楼

河马,程序呢?

不过大象你也把程序帖上来啊

14 楼

以下是c语言的实现方法,比较简陋,但是很好用
ps此程序未检测过
main()
{
    int input[100]={0};              
/*把数组input内的所有元素都赋值为0好像要用循环来实现,这里就简写
一下*/
    int a=0,b,i,j;
    clrscr();
    在这里输入的程序(用户数的数据都放在input树组中)我就不写了,直接写主体
    for(i=0;i<=2;i++)
    {
        for(j=0;j<=99;j++)
        {
            if(input[j]>a)
            {
                a=input[j];
            }
            if(input[i]==0)
            {
                break();
            }
        }
    }
    printf("%d",a);
}

15 楼

还有11楼的,你能不能把自己的程序也贴上来啊?不要光说不练啊!

16 楼

那个....
算法时间复杂度达到了O(n)了.
当n太大的时候就Time Limit Exceed了...
请各位贴个O(logn)的算法好不好?

17 楼

任意找m与它比,再缩小范围。仔细想。

18 楼

使用二叉树,节点纪录该数值以及该节点左子树节点的个数。
读入数据,递归的将小数放在左边并将该节点左子树节点数目的计数+1。

19 楼

12楼的程序    其实就是  排序的 一种 繁过程

我来回复

您尚未登录,请登录后再回复。点此登录或注册