顺序查找

顺序查找是针对无序序列的一种最简单的查找方式。

查找原理

顺序查找的原理很简单,就是遍历整个列表,逐个进行记录的关键字与给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录。如果直到最后一个记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找失败。

时间复杂度是O(n)。

下面是顺序查找的算法实现代码。

C#版:

复制代码
namespace SequenceSearch.CSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> list = new List<int> { 50, 10, 90, 30, 70, 40, 80, 60, 20 };
            
            Console.WriteLine("********************顺序查找********************\n");
            Display(list);
            int result = SequenceSearch(list, 30);
            if (result != -1) Console.WriteLine("30在列表中的位置是:{0}", result);
            else Console.WriteLine("对不起,列表中不存在该元素!");
            
            Console.ReadKey();
        }

        /// <summary>
        /// 顺序查找
        /// </summary>
        /// <param name="list">待查列表</param>
        /// <param name="key">关键字</param>
        /// <returns>返回关键字在列表中的位置</returns>
        public static int SequenceSearch(List<int> list, int key)
        {
            //遍历查找列表
            for (int i = 0; i < list.Count; i++)
            {
                //找到该记录,返回位置序号
                if (list[i] == key) return i;
            }
            
            //没有找到
            return -1;
        }

        private static void Display(IList<int> list)
        {
            Console.WriteLine("\n**********展示结果**********\n");

            if (list != null && list.Count > 0)
            {
                foreach (var item in list)
                {
                    Console.Write("{0} ", item);
                }
            }
            Console.WriteLine("\n**********展示完毕**********\n");
        }
    }
}
复制代码

程序运行结果如图:

ds32

posted @ 2016-01-29 15:13  守候幸福  阅读(218)  评论(0编辑  收藏  举报