アルゴリズム一(逐次検索)
2171 ワード
private static int SequenceSearch(int[] a, int key)
{
for (int i = 0; i < a.Length; i++)
{
if (a[i] == key)
{
return i;
}
}
return -1;
}
簡単すぎて、説明しないで、記念を残します.これでいいと思わないでください.上のものはまだ最適化できます.不可能ですよね?可能性があります.アルゴリズムを作るには、徹底的に改善し、下を見てください.
private static int SequenceSearch2(int[] a, int key)
{
int i = a.Length - 1;
a[0] = key;
while (a[i] != key)
{
i--;
}
return i;
}
a[0]は予備位置であり、配列の真の要素はa[1]から始まる.アルゴリズム2はアルゴリズム1よりもif判定が少なく、データが大きいと明らかに優勢がある.両アルゴリズムの時間複雑さはO(n)であるが、アルゴリズム2はアルゴリズム1より優れている.
順序検索は小型のデータに適しています.彼は記録に対して特別な要求がありません.アルゴリズムは簡単で便利です.私たちはよく使うべき順序を制御して効率を高めることができます.
大きなデータ量で検索すると効率が悪いという欠点があります.