一个算法
请教高手一个算法
任意长度的int数组,取出这个数组中第95%个元素的值。比如有100个数,那么取出第95个元素的值。
任意长度不知该怎么实现。
函数的接口类似于以下:
int rate_95(int *p[])
{}
函数要返回第95%个元素的值
求教高手!!!
------解决方案--------------------
任意长度的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]; }
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
int rate_95(int *p[])
{
int len=0;
int num=0;
while(*p!=NULL)
len++;
num=p[len/100/95];
return num;
}
------解决方案--------------------
------解决方案--------------------
接口定义: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;
}
}
------解决方案--------------------
------解决方案--------------------
- 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; }