/****************************/
/* 線形探索 */
/* coded by Y.Suganuma */
/****************************/
import java.io.*;
import java.util.*;
// 探索
class Search
{
long tm1, tm2, tm3;
// 配列と線形探索
void linear()
{
int i1, i2, k, n = 0, ct = 0;
int data[] = new int [5000000], s[] = new int [100000];
Random rn = new Random(12345);
tm1 = System.currentTimeMillis();
for (i1 = 0; i1 < 5000000; i1++) {
k = rn.nextInt();
data[i1] = k;
ct++;
if (i1%50 == 0 && n < 100000) {
s[n] = k;
n++;
}
}
tm2 = System.currentTimeMillis();
System.out.printf(" 保存: %d ms\n", tm2-tm1);
for (i1 = 0; i1 < n; i1++) {
for (i2 = 0; i2 < 5000000; i2++) {
if (data[i2] == s[i1])
break;
}
}
tm3 = System.currentTimeMillis();
System.out.printf(" 探索: %d ms\n", tm3-tm2);
System.out.printf(" データ数: %d\n", ct);
}
// ArrayListと線形探索
void linear_v()
{
int i1, k, n = 0, ct = 0, s[] = new int [100000];
Random rn = new Random(12345);
ArrayList<Integer> data = new ArrayList <Integer> ();
tm1 = System.currentTimeMillis();
for (i1 = 0; i1 < 5000000; i1++) {
k = rn.nextInt();
data.add(k);
ct++;
if (i1%50 == 0 && n < 100000) {
s[n] = k;
n++;
}
}
tm2 = System.currentTimeMillis();
System.out.printf(" 保存: %d ms\n", tm2-tm1);
for (i1 = 0; i1 < n; i1++)
data.indexOf(s[i1]);
tm3 = System.currentTimeMillis();
System.out.printf(" 探索: %d ms\n", tm3-tm2);
System.out.printf(" データ数: %d\n", ct);
}
}
// main プログラム
public class Test
{
public static void main (String[] args)
{
Search ss = new Search();
// 配列と線形探索
System.out.printf("配列と線形探索\n");
ss.linear();
// ArrayListと線形探索
System.out.printf("ArrayListと線形探索\n");
ss.linear_v();
}
}