一个算法

请教高手一个算法
任意长度的int数组,取出这个数组中第95%个元素的值。比如有100个数,那么取出第95个元素的值。
任意长度不知该怎么实现。
函数的接口类似于以下:

int rate_95(int *p[])
{}

函数要返回第95%个元素的值

求教高手!!!

------解决方案--------------------
C/C++ code
arr[sizeof(arr)/sizeof(int) * 100 / 95]

------解决方案--------------------
C/C++ code
int rate_95(int *p, int len)
{
    int n = 0.95 * len;
    return p[n-1];
}

------解决方案--------------------
探讨

麻烦再具体点吧,没看懂数组的任意长度该怎么实现?

引用:

C/C++ code
arr[sizeof(arr)/sizeof(int) * 100 / 95]

------解决方案--------------------
探讨

引用:

引用:
友情提示:这个不是4,O(∩_∩)O~

那敢问楼上,sizeof一个指针是多少?一般的?32位机

嗯 是4. 刚才要去吃饭写太快,没考虑..

------解决方案--------------------
探讨

引用:

引用:

引用:
友情提示:这个不是4,O(∩_∩)O~

那敢问楼上,sizeof一个指针是多少?一般的?32位机

嗯 是4. 刚才要去吃饭写太快,没考虑..


C/C++ code

template <class T>
i……

------解决方案--------------------
探讨

我是想引用:
楼主想干什么?int rate_95(int *p[])//你这个int *p[]十个int型指针数组。。。
首先我想了解,你调用这个rate_95这个函数的参数是什么类型的?

------解决方案--------------------
int rate_95(int *p[])
{
int len=0;
int num=0;
while(*p!=NULL)
len++;

num=p[len/100/95];
return num;

}




------解决方案--------------------
探讨
C/C++ code

arr[sizeof(arr)/sizeof(int) * 100 / 95]

------解决方案--------------------
接口定义:int rate_95(int *p[], int iArrSize)
使用:rate_95(pInputArr,sizeof(pInputArr)/sizeof(pInputArr))

函数实现:
int rate_95(int *p[], int iArrSize)
{
if (p!=0)
{
return *(p+((int)(iArrSize * 100 / 95)));
}
else
{
return 0xFFFF; //error;
}
}
------解决方案--------------------
探讨
还有一个是动态数组的问题该怎么实现?比如,每次输入的int数据长度都不一样,该如何存储?

引用:

接口定义:int rate_95(int *p[], int iArrSize)
使用:rate_95(pInputArr,sizeof(pInputArr)/sizeof(pInputArr))

函数实现:
int rate_95(int *p[……

------解决方案--------------------
C/C++ code

#include <stdio.h>

int main()
{
    int num = 0;
    int index = 0;
    int count = 0;
    while (true) {
        int number = 0;
        scanf("%d", &number);
        if (number < 0) {
            break;
        }
        ++count;
        if ((int)(count * 0.95) >= index + 1) {
            index = count;
            num = number;
        }
    }
    printf("count = %d, index = %d, num = %d\r\n", count, index, num);
    return 0;
}