《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) ||

相关推荐
Dumbness27 分钟前
UIA 读微信群消息没有 id,怎么判断哪条是新的:后缀对齐在翻历史和撤回时整屏重报
python·算法
taka27 分钟前
从 24x 到 141x:我用纯 Python 零依赖项目,扒开了 GPU 加速的性能黑洞
算法
UIU1141 小时前
P16237 [蓝桥杯 2026 省 B] 应急布线
数据结构·c++·算法·蓝桥杯
旖旎夜光1 小时前
LeetCode 315: 算右侧小于当前元素的个数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
像风一样自由20201 小时前
2.如何用FastAPI把一个Python算法封装成HTTP服务
python·算法·fastapi
D e re k ZH1 小时前
保序回归:从 PAVA 到可并堆的单调约束优化
c++·算法·数据挖掘·回归·kotlin
青少儿编程课堂1 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:字典树前缀树与单词检索统计
c++·python·算法·bfs·信息学竞赛
Nuanyt1 小时前
LeetCode Hot 100 链表专题2 3 题 (Java)
java·笔记·算法·leetcode·链表
海绵宝宝转agent2 小时前
LeetCodehot100题解
java·笔记·学习·算法·leetcode·深度优先
青少儿编程课堂2 小时前
2026蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:堆排序与优先队列解析
c++·python·算法·bfs·信息学竞赛