zoukankan      html  css  js  c++  java
  • 顺序查找

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

    查找原理

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

    时间复杂度是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("********************顺序查找********************
    ");
                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("
    **********展示结果**********
    ");
    
                if (list != null && list.Count > 0)
                {
                    foreach (var item in list)
                    {
                        Console.Write("{0} ", item);
                    }
                }
                Console.WriteLine("
    **********展示完毕**********
    ");
            }
        }
    }
    复制代码

    程序运行结果如图:

    ds32

  • 相关阅读:
    初步掌握Yarn的架构及原理(转)
    CORS 专题
    WebSocket是一种协议
    InputStream中read()与read(byte[] b)(转)
    listview异步加载sd卡图片
    ListView getView中放置多个item和getItemViewType的用法
    Android ListView异步加载数据
    android sqlite 一次创建多个表
    Android Adapter的getViewTypeCount和getItemViewType
    Android 获取SDCard上图片和视频的缩略图
  • 原文地址:https://www.cnblogs.com/nxxshxf/p/5169085.html
Copyright © 2011-2022 走看看