算法一(顺序查找)
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。
顺序查找适合于小型数据,他对记录没有特殊要求,算法简单方便,我们可以控制常用值得次序提高效率,比如:把常用的数值放到数组前面。
缺点明显,大数据量搜索时效率低下。