算法一(顺序查找)

        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。

顺序查找适合于小型数据,他对记录没有特殊要求,算法简单方便,我们可以控制常用值得次序提高效率,比如:把常用的数值放到数组前面。

缺点明显,大数据量搜索时效率低下。

 

posted @ 2013-04-17 15:10  烟鬼  阅读(232)  评论(0编辑  收藏  举报