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

相关推荐
姜不吃葱1 分钟前
【力扣热题100】哈希——两数之和
算法·leetcode·哈希算法·力扣热题100
AI4Sci.10 分钟前
在云服务器上基于lora微调Qwen2.5-VL-7b-Instruct模型(下)
人工智能·算法·机器学习·大模型·lora微调·大模型本地部署·qwen2.5-vl-7b
一只小风华~12 分钟前
JavaScript:数组常用操作方法的总结表格
前端·javascript·数据结构·vue.js·算法
TiAmo zhang37 分钟前
深度学习与图像处理 | 基于PaddlePaddle的梯度下降算法实现(线性回归投资预测)
图像处理·深度学习·算法
一匹电信狗1 小时前
【C++】手搓一个STL风格的vector容器
c语言·数据结构·c++·算法·leetcode·stl·visual studio
生信探索1 小时前
SeuratExtend 可视化教程(1):单细胞分析的高颜值绘图指南
算法
小小小白的编程日记1 小时前
C语言中的数据结构--栈和队列(2)
c语言·数据结构
李永奉1 小时前
C语言-数组:数组(定义、初始化、元素的访问、遍历)内存和内存地址、数组的查找算法和排序算法;
c语言·算法·排序算法
星辰大海的精灵1 小时前
深入解析 CopyOnWriteArrayList
java·后端·算法
逝雪Yuki2 小时前
Leetcode——11. 盛最多水的容器
c++·算法·leetcode·双指针