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日

相关文章

  • 在C#的类或结构中重写ToString方法的用法简介

    C#中的类和结构体都继承了Object类,而Object类中有一个ToString方法,用于将对象转换为字符串。但是,由于Object类中的ToString方法返回对象类型的名称,而不是对象本身的有用信息,因此我们可能希望在自己的类中重写ToString方法以提供更有用的文本表示。 以下是在C#中重写ToString方法的用法简介: 重写ToString方法…

    C# 2023年6月7日
    00
  • 武装你的WEBAPI-OData之API版本管理

    本文属于OData系列 Intro 对外提供WEBAPI时,如果遇上了版本升级,那么控制WEBAPI的版本也是非常必要的。OData官方提供了版本控制以及管理的解决方案,我个人是实践体会是不好用,好在社区提供了对应的nuget包,与.NET主版本同步更新。 介绍 ASP.NET API Versioning是一个提供ASP.NET WEBAPI版本管理的包,…

    C# 2023年5月9日
    00
  • 如何用C#获取计算机详细的软件和硬件信息

    当使用C#语言编写桌面应用程序时,有时需要获取计算机的详细软硬件信息,例如操作系统、处理器、内存、硬盘、显卡、声卡等信息。本文将为您提供一份完整攻略,介绍如何使用C#获取计算机的诸多硬件和软件信息。 第一步:导入必要的命名空间 首先,我们需要使用以下命名空间来访问相关API: using System.Management; //用于WMI操作 using …

    C# 2023年6月6日
    00
  • asp.net各种cookie代码和解析实例

    ASP.NET中的Cookie ASP.NET中cookie是一种存储在客户端计算机上的小文件,由服务器在响应HTTP请求时发送到客户端,客户端的浏览器会将cookie存储在客户端计算机上,并在以后的HTTP请求中将其发送回服务器。ASP.NET支持三种类型的cookie:会话cookie、固定Cookie和卷曲cookie。 会话Cookie 会话cook…

    C# 2023年5月31日
    00
  • Quartz.Net调度框架配置解析

    Quartz.Net调度框架配置解析 介绍 Quartz是一个常见的.NET调度框架,可以用于构建.NET应用程序的时间触发任务。Quartz.NET是Java Quartz的一个直接端口,并在.NET平台上实现了所有Java版的原始功能。 本文将详细解释如何对Quartz的常用配置进行解析。 Quartz配置基础 Quartz的配置包含多个子元素和属性,包…

    C# 2023年5月31日
    00
  • C#使用Task实现异步方法

    接下来我会详细讲解如何使用C#的Task实现异步方法。 什么是异步方法? 先简单介绍一下什么是异步方法。异步方法指的是在执行某些任务时,不阻塞当前线程,而是开辟新的线程去执行任务,这样能够提高程序的执行效率。C#中实现异步方法的方式有很多,其中就包括Task。 使用Task实现异步方法的步骤 具体实现步骤如下: 构造异步方法调用的签名,签名需要加上async…

    C# 2023年5月15日
    00
  • C#使用CefSharp实现内嵌网页详解

    C#使用CefSharp实现内嵌网页详解 CefSharp是一个基于Chromium的.NET开源项目,它提供了一个简单的方法来在C#应用程序中嵌入浏览器。本文将介绍如何使用CefSharp实现内嵌网页,包括以下步骤: 安装CefSharp 创建WinForms应用程序 实现内嵌网页 1. 安装CefSharp 首先,我们需要安装CefSharp。可以使用N…

    C# 2023年5月15日
    00
  • C#集合本质之链表的用法详解

    C#集合本质之链表的用法详解 什么是链表 链表是一种常见的数据结构,它由一些节点组成,每个节点存储着数据和指向下一个节点的地址。链表的优点在于可以动态添加、删除节点,数据的操作效率较高。 在C#中,链表是一种集合类,实现了ICollection和IEnumerable接口,提供了许多常见的操作方法。 链表的构造 在使用链表之前,需要使用LinkedList&…

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