《C#数据结构与算法》—二分查找法和顺序查找

6-1 二分查找和顺序查找、6-2 查找算法性能比较


顺序查找

功能解释:所有在 arr2 中出现但不在 arr1 中出现的元素。

  • OrderSearch函数:arr 数组中线性查找 target,找到返回数组的索引i,未找到返回-1。
  • 主函数: 遍历 arr2 的每个元素,逐个检查是否存在于 arr1 中,并输出在 arr2 不在arr1中的元素。

二分查找法

什么是二分查找算法?

只能对有序排列进行高效查找(排序算法的作用)

查找23:

TestSearch.cs

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataStucture
{
    class TestSearch
    {
        public static int BinarySearch(int[] arr,int target)
        {
            int l = 0;
            int r = arr.Length - 1;


            while (l<=r)
            {
                //int mid = (r+l)/2;
                //防止产生整形的溢出
                int mid = l + (r - l) / 2;
                if (target < arr[mid])
                {
                    r = mid - 1;
                }
                else if (target > arr[mid])
                {
                    l = mid + 1;
                }
                else
                    return mid;
            }
            return -1;
        }
    }
}

查找50:

查询算法复杂度分析

**顺序查找法:**最坏的时间复杂度。也就是对于未命中查找的情况,需要遍历所有的元素查询。

**二分查找法:**最坏的时间复杂度。也就是对于未命中查找的情况。 每次比较都将数据规模缩小一半。

最坏情况(未命中查找):

  • 对于15个元素使用顺序查找最多进行了15次比较。
  • 对于15个元素使用二分查找最多进行了 4 次比较。 log2 15 =4 对于n个元素使用二分查找最多进行了log2n次比较。

|-------|----------|
| 顺序查找法 | O(n) |
| 二分查找法 | O(log n) |
| O(1)<O(log n)<O(n) ||

相关推荐
pearlthriving5 分钟前
STL容器及其底层
开发语言·c++·算法
念越7 分钟前
算法每日一题 Day04|快慢双指针法解决环形链表问题
数据结构·算法·链表
张人玉9 分钟前
VisionPro 药物检测工具 学习笔记
算法·c#·机器视觉·vsionpro
_深海凉_11 分钟前
LeetCode热题100-前 K 个高频元素
算法·leetcode·职场和发展
求学的小高11 分钟前
数据结构Day6(普通树、森林与二叉树的关系、哈夫曼编码、并查集)
数据结构·笔记·考研
周末也要写八哥20 分钟前
深度剖析:动态规划的分类及实例
算法·动态规划
星马梦缘27 分钟前
离散数学——二元关系 作战记录
算法·离散数学
LDG_AGI31 分钟前
【搜索引擎】Elasticsearch(五):prefix前缀匹配方法大全(包含search_as_you_type等6种解法)
人工智能·深度学习·算法·elasticsearch·搜索引擎
她说彩礼65万34 分钟前
C语言 函数指针
c语言·开发语言·算法
王老师青少年编程34 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【排序贪心】:纪念品分组
c++·算法·贪心·csp·信奥赛·排序贪心·纪念品分组