精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C#常見的四種經典查找算法

開發 前端
線性查找算法是一種簡單的查找算法,用于在一個數組或列表中查找一個特定的元素。它從數組的第一個元素開始,逐個檢查每個元素,直到找到所需的元素或搜索完整個數組。線性查找的時間復雜度為O(n),其中n是數組中的元素數量。

前言

在編程領域,數據結構與算法是構建高效、可靠和可擴展軟件系統的基石。它們對于提升程序性能、優化資源利用以及解決復雜問題具有至關重要的作用。今天大姚給大家分享四種C#中常見的經典查找算法。

C#二分查找算法

簡介

二分查找算法是一種在有序數組中查找特定元素的搜索算法。

代碼實現

public class 二分查找算法
    {
        /// <summary>
        /// 二分查找算法
        /// </summary>
        /// <param name="arr">arr是已排序的數組</param>
        /// <param name="target">target是要查找的目標值</param>
        /// <returns>目標值在數組中的索引,如果未找到則返回-1</returns>
        public static int BinarySearch(int[] arr, int target)
        {
            int left = 0; // 定義左指針
            int right = arr.Length - 1; // 定義右指針

            while (left <= right)
            {
                // 計算中間元素的索引
                int mid = left + (right - left) / 2;

                if (arr[mid] == target)
                {
                    // 如果中間元素等于目標值
                    return mid; // 查找成功,返回索引
                }
                else if (arr[mid] < target)
                {
                    // 如果目標值小于中間元素,則在左半部分查找
                    left = mid + 1;
                }
                else
                {
                    // 如果目標值大于中間元素,則在右半部分查找
                    right = mid - 1;
                }
            }

            // 未找到 target,返回-1
            return -1;
        }

        public static void BinarySearchRun()
        {
            int[] arr = { 1, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59 }; //注意:這里的數組是已排序的數組
            int target = 31; //需要要查找的目標值

            int result = BinarySearch(arr, target); //調用二分查找方法

            if (result == -1)
            {
                Console.WriteLine("元素未找到");
            }
            else
            {
                Console.WriteLine($"元素找到,索引為:{result},值為:{arr[result]}");
            }
        }
    }

C#線性查找算法

簡介

線性查找算法是一種簡單的查找算法,用于在一個數組或列表中查找一個特定的元素。它從數組的第一個元素開始,逐個檢查每個元素,直到找到所需的元素或搜索完整個數組。線性查找的時間復雜度為O(n),其中n是數組中的元素數量。

代碼實現

public static void LinearSearchRun()
        {
            int[] arr = { 2, 3, 4, 10, 40, 50, 100, 77, 88, 99 };
            int target = 100;

            int result = LinearSearch(arr, target);

            // 輸出結果
            if (result == -1)
            {
                Console.WriteLine("元素未找到");
            }
            else
            {
                Console.WriteLine($"元素在索引 {result} 處找到,index = {result}");
            }
        }

        /// <summary>
        /// 線性查找函數
        /// </summary>
        /// <param name="arr">arr</param>
        /// <param name="target">target</param>
        /// <returns></returns>
        public static int LinearSearch(int[] arr, int target)
        {
            // 遍歷數組
            for (int i = 0; i < arr.Length; i++)
            {
                // 如果找到目標值,返回其索引
                if (arr[i] == target)
                {
                    return i;
                }
            }
            // 如果沒有找到,則返回-1
            return -1;
        }

C#二叉搜索樹算法

簡介

二叉搜索樹(Binary Search Tree,簡稱BST)是一種節點有序排列的二叉樹數據結構。

代碼實現

namespace HelloDotNetGuide.常見算法
{
    public class 二叉搜索樹算法
    {
        public static void BinarySearchTreeRun()
        {
            var bst = new BinarySearchTree();

            // 插入一些值到樹中
            bst.Insert(50);
            bst.Insert(30);
            bst.Insert(20);
            bst.Insert(40);
            bst.Insert(70);
            bst.Insert(60);
            bst.Insert(80);
            bst.Insert(750);

            Console.WriteLine("中序遍歷(打印有序數組):");
            bst.InorderTraversal();

            Console.WriteLine("\n");

            // 查找某些值
            Console.WriteLine("Search for 40: " + bst.Search(40)); // 輸出: True
            Console.WriteLine("Search for 25: " + bst.Search(25)); // 輸出: False

            Console.WriteLine("\n");

            // 刪除某個值
            bst.Delete(50);
            Console.WriteLine("刪除50后:");
            bst.InorderTraversal();
        }
    }

    /// <summary>
    /// 定義二叉搜索樹的節點結構
    /// </summary>
    public class TreeNode
    {
        public int Value;
        public TreeNode Left;
        public TreeNode Right;

        public TreeNode(int value)
        {
            Value = value;
            Left = null;
            Right = null;
        }
    }

    /// <summary>
    /// 定義二叉搜索樹類
    /// </summary>
    public class BinarySearchTree
    {
        private TreeNode root;

        public BinarySearchTree()
        {
            root = null;
        }

        #region 插入節點

        /// <summary>
        /// 插入新值到二叉搜索樹中
        /// </summary>
        /// <param name="value">value</param>
        public void Insert(int value)
        {
            if (root == null)
            {
                root = new TreeNode(value);
            }
            else
            {
                InsertRec(root, value);
            }
        }

        private void InsertRec(TreeNode node, int value)
        {
            if (value < node.Value)
            {
                if (node.Left == null)
                {
                    node.Left = new TreeNode(value);
                }
                else
                {
                    InsertRec(node.Left, value);
                }
            }
            else if (value > node.Value)
            {
                if (node.Right == null)
                {
                    node.Right = new TreeNode(value);
                }
                else
                {
                    InsertRec(node.Right, value);
                }
            }
            else
            {
                //值已經存在于樹中,不再插入
                return;
            }
        }

        #endregion

        #region 查找節點

        /// <summary>
        /// 查找某個值是否存在于二叉搜索樹中
        /// </summary>
        /// <param name="value">value</param>
        /// <returns></returns>
        public bool Search(int value)
        {
            return SearchRec(root, value);
        }

        private bool SearchRec(TreeNode node, int value)
        {
            // 如果當前節點為空,表示未找到目標值
            if (node == null)
            {
                return false;
            }

            // 如果找到目標值,返回true
            if (node.Value == value)
            {
                return true;
            }

            // 遞歸查找左子樹或右子樹
            if (value < node.Value)
            {
                return SearchRec(node.Left, value);
            }
            else
            {
                return SearchRec(node.Right, value);
            }
        }

        #endregion

        #region 中序遍歷

        /// <summary>
        /// 中序遍歷(打印有序數組)
        /// </summary>
        public void InorderTraversal()
        {
            InorderTraversalRec(root);
        }

        private void InorderTraversalRec(TreeNode root)
        {
            if (root != null)
            {
                InorderTraversalRec(root.Left);
                Console.WriteLine(root.Value);
                InorderTraversalRec(root.Right);
            }
        }

        #endregion

        #region 刪除節點

        /// <summary>
        /// 刪除某個值
        /// </summary>
        /// <param name="val">val</param>
        public void Delete(int val)
        {
            root = DeleteNode(root, val);
        }

        private TreeNode DeleteNode(TreeNode node, int val)
        {
            if (node == null)
            {
                return null;
            }

            if (val < node.Value)
            {
                node.Left = DeleteNode(node.Left, val);
            }
            else if (val > node.Value)
            {
                node.Right = DeleteNode(node.Right, val);
            }
            else
            {
                // 節點有兩個子節點
                if (node.Left != null && node.Right != null)
                {
                    // 使用右子樹中的最小節點替換當前節點
                    TreeNode minNode = FindMin(node.Right);
                    node.Value = minNode.Value;
                    node.Right = DeleteNode(node.Right, minNode.Value);
                }
                // 節點有一個子節點或沒有子節點
                else
                {
                    TreeNode? temp = node.Left != null ? node.Left : node.Right;
                    node = temp;
                }
            }

            return node;
        }

        /// <summary>
        /// 找到樹中的最小節點
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        private TreeNode FindMin(TreeNode node)
        {
            while (node.Left != null)
            {
                node = node.Left;
            }
            return node;
        }

        #endregion
    }
}

C#哈希查找算法

簡介

哈希查找算法是一種高效的查找算法,通過將鍵值映射到哈希表中的位置來實現快速訪問。在C#中,哈希查找通常通過哈希表(Hashtable)或字典(Dictionary)來實現。

代碼實現

public class 哈希查找算法
    {
        /// <summary>
        /// 哈希查找函數
        /// </summary>
        /// <param name="target">target</param>
        public static void HashSearchFunctionRun(int target)
        {
            //創建一個字典來存儲鍵值對
            var dic = new Dictionary<int, string>();
            dic.Add(1, "one");
            dic.Add(2, "two");
            dic.Add(3, "three");

            //查找目標值是否在Dictionary中存在
            //TryGetValue方法可以返回一個bool值和值,如果找到了目標值,則返回true和對應的值,否則返回false和默認值
            string value;
            if (dic.TryGetValue(target, out value))
            {
                Console.WriteLine("Found Data: " + value);
            }
            else
            {
                Console.WriteLine("Not Found Data.");
            }
        }
    }


責任編輯:武曉燕 來源: 追逐時光者
相關推薦

2009-09-08 17:20:01

C#排序算法

2009-08-26 15:04:35

C#轉換

2024-02-28 09:22:03

限流算法數量

2009-08-20 09:52:31

C#參數類型

2009-08-27 15:00:55

C#線程控制

2011-11-24 16:34:39

Java

2009-08-05 14:09:04

C#日期轉換

2009-09-22 14:20:39

C#播放聲音

2009-09-17 16:55:58

C#組件設計

2021-06-04 10:45:31

軟件架構分布式

2024-06-24 01:00:00

2021-08-11 20:17:22

推薦算法系統

2017-07-14 16:28:21

2025-09-05 01:23:00

PyTorchPython分支

2010-08-13 13:31:48

Flex效果組件

2024-05-29 13:18:12

線程Thread?方式

2021-06-24 17:55:40

Python 開發編程語言

2011-06-30 14:45:52

外鏈

2024-11-07 11:17:50

2021-08-12 11:37:23

數據分析錯誤
點贊
收藏

51CTO技術棧公眾號

成人毛片网站| 欧美精品在线看| 91香蕉视频污版| 69xxx在线| 91免费国产在线| 国产日本欧美视频| 欧美三级韩国三级日本三斤在线观看| 美女精品一区最新中文字幕一区二区三区 | 国产日韩在线观看av| 亚洲国产成人精品综合99| 亚洲美女久久| 欧美成人官网二区| 污污视频网站免费观看| 在线电影福利片| 久久精品一区蜜桃臀影院| 91在线国产电影| 亚洲av中文无码乱人伦在线视色| 91九色精品| 亚洲精品小视频在线观看| 国产免费中文字幕| 亚洲精品日产| 一区二区三区精密机械公司| 深夜福利成人| 亚洲欧美日韩动漫| 国产电影一区二区三区| 国产精品视频一区二区高潮| 国产午夜在线播放| 欧美精品啪啪| 日韩有码在线电影| 国产三级视频网站| 成人精品毛片| 91麻豆精品国产| jizz欧美激情18| 欧美另类老肥妇| 一区二区三区欧美亚洲| 一区二区三区的久久的视频| 国产一区二区影视| 99精品视频在线免费观看| 91精品在线播放| 波多野结衣网站| 国产欧美一区二区色老头| 欧美成人亚洲成人日韩成人| 99国产精品免费| 奇米亚洲欧美| 亚洲午夜av久久乱码| 亚洲制服丝袜在线播放| 亚洲一区二区三区四区电影| 91精品国产高清一区二区三区| 日日干夜夜操s8| 日韩视频网站在线观看| 欧美午夜宅男影院在线观看| 少妇人妻大乳在线视频| 伊人福利在线| 亚洲综合一区二区精品导航| av中文字幕av| 日本乱理伦在线| 一区二区不卡在线视频 午夜欧美不卡在 | 色哟哟国产精品色哟哟| 粉嫩欧美一区二区三区高清影视| 91久久国产综合久久蜜月精品 | 久久精品久久久精品美女| 国产精品高潮粉嫩av| 日韩精品一区二区亚洲av观看| 亚洲综合激情| 日韩av免费看网站| 中文字幕在线天堂| 免费精品视频在线| 成人免费xxxxx在线观看| 又骚又黄的视频| 国内不卡的二区三区中文字幕 | 日韩av不卡一区| 亚洲精品第一国产综合精品| 中文成人无字幕乱码精品区| 日韩大片在线免费观看| 亚洲精品自在久久| 久久婷婷五月综合| 天天影视欧美综合在线观看| 欧美成人三级视频网站| 久久亚洲av午夜福利精品一区| 激情欧美亚洲| 国产成人+综合亚洲+天堂| 亚洲精品一区二区二区| 国产自产2019最新不卡| 国产a一区二区| 每日更新av在线播放| 欧美国产成人精品| 日本丰满大乳奶| 91豆花视频在线播放| 欧美视频中文在线看| 九色91popny| 国产999精品在线观看| 精品毛片乱码1区2区3区| 国产 中文 字幕 日韩 在线| 欧美色婷婷久久99精品红桃| 九九精品视频在线观看| 波多野结衣视频网站| 美女脱光内衣内裤视频久久网站| 91嫩草在线| 偷拍自拍在线| 国产人成一区二区三区影院| 欧美日韩dvd| 日本高清不卡一区二区三区视频 | 在线播放黄色av| 欧美日韩一区二区三区不卡视频| 在线免费看av不卡| 精品深夜av无码一区二区老年| 久久久久国产精品一区三寸| 91麻豆国产语对白在线观看| 日本私人网站在线观看| 亚洲视频综合在线| 国产在线青青草| 日本免费一区二区三区视频| 国产亚洲精品久久久久动| 亚洲国产精品免费在线观看| 久久久久久夜| av一区二区三区免费| 国产在线视频福利| 亚洲第一成人在线| 网站在线你懂的| 精品久久不卡| 欧美伊久线香蕉线新在线| 99精品在线看| 欧美国产欧美综合| 亚洲欧洲日产国码无码久久99 | 日韩欧美一区二区久久婷婷| 少妇久久久久久久久久| 精品动漫3d一区二区三区免费版| 成人免费视频在线观看超级碰| 久青草国产在线| 午夜欧美在线一二页| 婷婷中文字幕在线观看| 精品日韩一区| 日本亚洲欧美成人| 污污视频在线观看网站| 一区二区三区四区在线| 欧美性受xxxxxx黑人xyx性爽| 超碰成人久久| 国产成人精品视频在线观看| 天天色综合av| 香蕉av福利精品导航| 国产无套精品一区二区三区| 欧美在线高清| 亚洲在线第一页| 毛片在线看片| 678五月天丁香亚洲综合网| 女人黄色一级片| 美女尤物久久精品| 欧美日韩亚洲在线| 第84页国产精品| 亚洲欧美www| 亚洲天堂av片| 久久综合av免费| 国产美女网站在线观看| 国产福利资源一区| 91地址最新发布| 日本国产在线| 欧美亚洲一区三区| 日本二区在线观看| 久久精品国产精品亚洲精品| 在线视频精品一区| 久久伊人影院| 欧美极品欧美精品欧美视频 | 久久国产精品久久精品| 国产av无码专区亚洲av麻豆| 夜夜嗨av一区二区三区网页| 成人做爰69片免费| 国产欧美日韩一级| 色婷婷精品国产一区二区三区| 激情亚洲小说| 毛片精品免费在线观看| 丰满熟妇乱又伦| 欧美性猛交99久久久久99按摩| 五月天精品视频| 开心九九激情九九欧美日韩精美视频电影 | 看电影就来5566av视频在线播放| 欧美日韩国产精选| 欧美日韩在线视频免费播放| www.日韩精品| 日本久久久久久久久久久久| 在线国产一区二区| 国产精品污www一区二区三区| 夜鲁夜鲁夜鲁视频在线播放| 一区二区三区精品99久久| 国产日韩免费视频| 精品国产鲁一鲁一区二区张丽| 山东少妇露脸刺激对白在线| 国产一区二区三区观看| 国产av人人夜夜澡人人爽麻豆| 免费不卡中文字幕在线| 成人免费自拍视频| 在线天堂新版最新版在线8| 日韩中文字幕视频| 日本美女一级视频| 欧美三日本三级三级在线播放| 久久久精品国产sm调教| 国产性色一区二区| 国产亚洲色婷婷久久| 销魂美女一区二区三区视频在线| 正在播放一区二区三区| 欧美日韩看看2015永久免费| 91精品视频观看| 欧亚在线中文字幕免费| 毛片精品免费在线观看| 国产视频三级在线观看播放| 日韩欧美电影在线| 国产九色91回来了| 亚洲成av人片www| 黄色片网站在线播放| 99久久久国产精品| 色网站在线视频| 奇米888四色在线精品| 99热久久这里只有精品| 色综合色综合| 欧美国产综合视频| 福利片一区二区| 国产一区红桃视频| 美女18一级毛片一品久道久久综合| 超碰97人人做人人爱少妇| 美女毛片在线看| 亚洲第一天堂av| 国产伦一区二区| 欧洲精品中文字幕| 中国一级特黄毛片| 亚洲国产你懂的| 欧美色图亚洲视频| 国产日韩亚洲欧美综合| 538国产视频| 成人精品视频.| 久久久久中文字幕亚洲精品| 久久精品国产77777蜜臀| 免费日韩视频在线观看| 亚洲深夜av| av免费观看国产| 性欧美猛交videos| 国产激情一区二区三区桃花岛亚洲| 国产又粗又爽又黄的视频| 欧美日韩精品一区二区视频| 免费成人在线观看av| 美腿丝袜亚洲图片| 国产精品初高中精品久久| 精品一区二区三区中文字幕在线| 成人精品久久久| 亚洲爽爆av| 91免费视频国产| 久久久久久久久成人| 2014亚洲精品| 日韩精品视频一区二区三区| 成人激情综合网| 国产一区二区三区免费观看在线| 成人免费视频网址| 国内不卡的一区二区三区中文字幕| 91久久中文字幕| 视频一区日韩精品| 国产精品我不卡| 色吊丝一区二区| 欧洲精品码一区二区三区免费看| 国产成人1区| 日韩欧美在线一区二区| 成人毛片免费看| 精品少妇人妻av一区二区| 综合激情一区| youjizz.com在线观看| 精品成人一区| 成人三级视频在线播放| 视频一区视频二区中文字幕| 亚洲免费一级视频| 激情国产一区二区| 丰满饥渴老女人hd| 99国产精品久久久久| 天堂久久久久久| 国产蜜臀97一区二区三区| chinese全程对白| 亚洲一区二区中文在线| www.av麻豆| 欧美午夜电影在线播放| 99久久精品日本一区二区免费| 亚洲精品一区二区三区精华液| 视频午夜在线| 中文在线不卡视频| 成人在线直播| 2018日韩中文字幕| 成人自拍视频网| 91亚色免费| 亚洲免费成人av在线| 国产四区在线观看| 亚洲深夜影院| 在线观看免费不卡av| 成人高清在线视频| 国产18无套直看片| 亚洲国产成人91porn| 69xxxx国产| 精品国产一区二区三区久久影院 | 国产宾馆实践打屁股91| 免费看黄色aaaaaa 片| 中文字幕一区二区日韩精品绯色| 日本五十熟hd丰满| 欧美视频一区二| 高潮一区二区三区乱码| 在线观看国产精品淫| 欧美hdxxx| 国产伊人精品在线| 日韩美脚连裤袜丝袜在线| 亚洲一区三区视频在线观看| 99国产精品久久久久久久| 亚洲精品午夜在线观看| 成人av网址在线观看| 91视频青青草| 欧美最新大片在线看| 天堂av手机版| 欧美伦理91i| 偷拍自拍亚洲| 日本一区二区三区四区在线观看 | 三年中国国语在线播放免费| 成人免费va视频| 人人澡人人澡人人看| 色欧美片视频在线观看在线视频| 成人午夜免费在线观看| xvideos亚洲| 国产a亚洲精品| 日本免费高清一区二区| 亚洲国产精品第一区二区三区| 特级西西444www| 国产精品色一区二区三区| 麻豆成人免费视频| 亚洲福利视频网| 青青草原国产在线| 2022国产精品| 中文字幕亚洲精品乱码| 亚洲欧美国产中文| 国产欧美一区二区精品性色| 国产精品suv一区| 日韩电影在线观看中文字幕| 丰满的护士2在线观看高清| 亚洲最大成人免费视频| 国产精品伦理久久久久久| 亚洲一区在线不卡| 国产亚洲精品超碰| 尤物视频免费观看| 亚洲男人的天堂网站| 亚洲天堂av在线| 欧美日韩一区二区三区在线视频 | 在线观看免费不卡av| 国产精品乱人伦| 亚洲中文字幕一区二区| 中文字幕日韩专区| 国产精品蜜月aⅴ在线| 视频一区视频二区视频| 日韩精彩视频在线观看| 亚洲а∨天堂久久精品2021| 91传媒视频在线播放| 超碰国产在线| 国产综合香蕉五月婷在线| 99久精品视频在线观看视频| 精品亚洲视频在线| 尤物av一区二区| 人人妻人人澡人人爽精品日本| 97国产在线视频| 亚洲亚洲免费| 蜜桃免费在线视频| 国产精品欧美久久久久无广告| 中文在线观看免费高清| 北条麻妃在线一区二区| 精品久久国产一区| 2019日韩中文字幕mv| 91在线视频在线| 中文字幕久久久久| 久久久999精品| 99久久人爽人人添人人澡 | 欧美日韩电影一区二区三区| 日韩精品一级中文字幕精品视频免费观看| 国产精品美女高潮无套| 欧美精品高清视频| 激情网站在线| 免费一区二区三区| 日本aⅴ免费视频一区二区三区 | 欧美日本精品| 第四色在线视频| 欧美在线影院一区二区| 国产午夜精品久久久久免费视| 国产一区二区精品在线| 日韩av一区二区三区| 国产三级国产精品国产国在线观看| 亚洲精品在线电影| 精品人伦一区二区三区蜜桃免费| 黄色片免费观看视频| 亚洲性猛交xxxxwww| 国产剧情一区二区在线观看| 日日摸日日碰夜夜爽无码| 国产亚洲精品免费| www.黄色av| 国产成人av网址| 牛夜精品久久久久久久99黑人| 成人h动漫精品一区| 制服丝袜亚洲网站| 极品在线视频| 日韩不卡一二区| 久久午夜色播影院免费高清 | 肉丝袜脚交视频一区二区| 色老板免费视频| 精品亚洲va在线va天堂资源站|