编写一个算法

来源:百度知道 编辑:UC知道 时间:2024/05/12 16:38:05
编写一个算法,判断浮点数数组a[]中是否有值大于1000的成员。若有,则给出大于1000的成员中下标最小那个成员的下标。指出算法中的基本操作和关键操作,分析你的算法的时间复杂性,并用大O记法表示之。

int func(float Arr[], int num)
{
int flag = 0;//如果有大于1000,则标志位为1
int i = 0;
int index = 0;
float min = Arr[0];

for( i = 0; i < num; i++)
{
if( Arr[i] > 1000 )
{
flag = 1;
if ( Arr[i] < min)
{
min = Arr[i];
index = i;
}
}
}

if (flag)
return index;
else
return -1;

}
时间复杂度是O(n)

public class Suffix {
public static void main(String[] a) {
float[] floats={1.3f,1.5f, 1000.2f,5.4f,2000.9f};
System.out.println(suffix(floats));
}
private static int suffix(float[] a){
int suffix = 0;
for(float f:a){
if(f>1000) break;
else suffix++;
}
return suffix;
}
}

显示结果是2 也就是数组的第3个元素。。。。。
主要的是操作是suffix()这个函数。
考虑时间复杂性,就要看遍历的时间了。上边的代码中用的是for-each 速度还可以的 也可以用定义一个map,用map.entrySet 时间会更快。
最后那个大O不知道什么意思 也没去查