C# 数组查找与排序实现代码

让我来给你详细讲解一下“C# 数组查找与排序实现代码”的完整攻略:

1. 数组查找

在 C# 中数组查找的实现可以使用线性查找和二分查找两种方式。

1.1 线性查找

线性查找就是从数组第一个元素开始逐一比对,直到找到目标元素或遍历整个数组还没有找到目标元素为止。以下为线性查找的代码示例:

public static int LinearSearch(int[] arr, int target)
{
    for (int i = 0; i < arr.Length; i++)
    {
        if (arr[i] == target)
        {
            return i;
        }
    }
    return -1;
}

上述代码中,参数 arr 表示要进行查找的数组,参数 target 表示要查找的目标元素。该方法返回查找到的目标元素在数组中的索引位置,如果没有找到则返回 -1。

1.2 二分查找

二分查找是一种高效的数组查找方式,可以在有序数组中使用。基本原理是在数组中间位置找到一个元素与目标元素比对,根据比对结果进一步缩小查找范围,逐渐逼近目标元素。以下为二分查找的代码示例:

public static int BinarySearch(int[] arr, int target)
{
    int left = 0, 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;
        }
    }
    return -1;
}

上述代码中采用了迭代方式实现二分查找,变量left和right 分别表示查找范围左右边界,mid为查找范围的中间位置。根据比对结果不断缩小查找范围,最终找到目标元素或未能找到该元素。

2. 数组排序

在 C# 中可以使用 Array 类(System 命名空间)的 Sort 方法来实现数组排序。以下为数组排序的代码示例:

int[] arr = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5 };
Array.Sort(arr);

上述代码中定义了一个整型数组 arr,然后使用 Array 类的 Sort 方法进行排序。该方法会将数组元素按升序排列。

除了升序排序,还可以使用 Array 类提供的 Sort 方法实现降序排序和自定义排序。以下为升序、降序和自定义排序的代码示例:

// 升序排序
Array.Sort(arr);

// 降序排序
Array.Sort<int>(arr, new Comparison<int>((i1, i2) => i2.CompareTo(i1)));

// 自定义排序
Array.Sort(arr, new MyComparer());
class MyComparer : IComparer<int>
{
    public int Compare(int x, int y)
    {
        if (x == y)
        {
            return 0;
        }
        else if (x < y)
        {
            return -1;
        }
        else
        {
            return 1;
        }
    }
}

上述代码中,在使用降序排序时需要传入一个 Comparison 类型的比较器,用于比较元素大小。自定义排序需要实现 IComparer 接口中的 Compare 方法,用于比较元素大小。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 数组查找与排序实现代码 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • Silverlight中动态获取Web Service地址

    下面是关于“Silverlight中动态获取WebService地址”的完整攻略,包含两个示例。 1. Silverlight中动态获取WebService地址 在Silverlight中,我们可以使用ServiceReference标记来引用WebService。但是,有时我们需要动态获取WebService地址,而不是在XAML中硬编码它。以下是在Sil…

    C# 2023年5月15日
    00
  • C#组件系列 你值得拥有的一款Excel处理神器Spire.XLS

    C#组件系列你值得拥有的一款Excel处理神器Spire.XLS 什么是Spire.XLS Spire.XLS是一款专门针对Microsoft Excel读写的C#组件。它允许您在C#应用程序中读写Excel文件,可以方便的读取Excel文件中的内容,以及新建、编辑、保存Excel文件。 Spire.XLS的功能 Spire.XLS可以进行很多Excel文件…

    C# 2023年5月15日
    00
  • Sql Server2012 使用IP地址登录服务器的配置图文教程

    下面我来为您详细讲解SQL Server 2012使用IP地址登录服务器的配置图文教程,包含以下几个步骤: 步骤一:启用SQL Server Mixed Mode身份验证 首先,我们需要开启SQL Server的Mixed Mode身份验证,才能使用账号密码登录。步骤如下: 1.以Windows管理员身份启动SQL Server Management Stu…

    C# 2023年6月7日
    00
  • C#实现简单的Http请求实例

    当我们在进行Web开发或者爬虫相关工作时,我们会经常需要使用到HTTP请求,而C#也支持HTTP请求的实现。本文将介绍如何使用C#实现简单的HTTP请求实例。 一、准备工作 在开始之前,我们需要进行以下准备工作: 安装和配置Visual Studio或者其他C#开发环境; 引入System.Net和System.IO命名空间; 学习HTTP协议的基本知识。 …

    C# 2023年6月1日
    00
  • 深入理解C#中常见的委托

    深入理解C#中常见的委托 委托的定义 委托(Delegate)是一种类型,它可以封装一个方法,使该方法像一个对象实例一样被传递。委托可以像其他任何对象一样进行实例化和调用,其实质是把方法作为参数进行传递和执行。在C#当中,定义委托类型需要使用delegate关键字: delegate void MyDelegate(int param); 以上代码定义了一个…

    C# 2023年5月31日
    00
  • C#使用semaphore来管理异步下载请求的方法

    下面我将详细讲解“C#使用semaphore来管理异步下载请求的方法”的完整攻略。 什么是 Semaphore Semaphore(信号量)是一种用于控制访问资源的同步方式。它维护了一个计数器(初始值为一个正整数),用来标识可以访问某一资源的线程数量。当一个线程需要访问该资源时,它需要先对这个计数器进行减一操作,当计数器变为0时,该资源将不再被其他线程访问,…

    C# 2023年6月7日
    00
  • VS2010下生成dll的方法

    下面给您详细讲解“VS2010下生成dll的方法”的完整攻略。 生成dll的基础知识 在开始具体的操作之前,需要了解生成dll的基本概念。 动态链接库(Dynamic Link Library,简称DLL)是一种Microsoft Windows操作系统采用的动态链接库文件格式。其特点是可以被程序按需加载,只有在有需要时才会被载入内存。这种动态链接方式可以避…

    C# 2023年6月7日
    00
  • C#自定义IP输入框控件

    那么下面我们来详细讲解一下如何实现C#自定义IP输入框控件。 1. 需求分析 我们需要自定义一个IP地址输入框控件,要求用户可以在文本框中输入0~255之间的数字,并以“.”分隔开4段,组成一个完整的IP地址。 2. 控件的设计 我们设计的自定义IP输入框控件,需要包含以下属性和方法: 属性: IPAddr:获取或设置IP地址的值。 方法: CreatePa…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部