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#如何安全、高效地玩转任何种类的内存之Span的本质

    C#如何安全、高效地玩转任何种类的内存之Span的本质攻略 什么是Span Span<T> 是 .NET Core 中新增的一种类型,它是一种类似于指针的结构体,表示一块连续的内存区域,其内容不一定是类型T的连续区域,可以是其他原语类型(如byte、int、long等)的连续区间。Span<T> 可以让我们高效地访问和读写内存在不进行…

    C# 2023年5月15日
    00
  • C# 特性AttributeUsage简介与使用教程

    下面是针对“C# 特性AttributeUsage简介与使用教程”的详细讲解攻略: C# 特性AttributeUsage简介与使用教程 简介 C# 中的特性是一种引用元数据的方式,可以给程序元素(如类、方法、属性等等)打上标记,为程序元素添加一些额外的信息。使用特性可以达到如下目的: 指定在编译期和运行时应如何处理 必须满足的条件 定义程序元素如何处理 A…

    C# 2023年6月6日
    00
  • C#获取鼠标在listview右键点击单元格的内容方法

    首先,要获取鼠标在listview右键点击单元格的内容,需要以下几个步骤: 给listview绑定MouseClick事件 判断是否是鼠标右键点击 判断是否是点击了单元格 获取单击的行和列信息 获取单元格内容 下面是具体的代码和示例: 给listview绑定MouseClick事件 listView1.MouseClick += listView1_Mous…

    C# 2023年6月8日
    00
  • c#字符串去掉空格的二种方法(去掉两端空格)

    当我们用C#编写程序时,经常需要对字符串进行处理,比如去掉字符串两端的空格。下面分别介绍两种方法: 方法一:使用Trim()函数 C#的String类内置了Trim()函数,可以用来去掉字符串两端的空格。使用方法非常简单,只需要在需要处理的字符串后面添加.Trim()即可。 string str = " Hello World! "; s…

    C# 2023年6月8日
    00
  • unity实现鼠标经过时ui及物体的变色操作

    实现鼠标经过时UI及物体的变色操作是Unity游戏开发中常见的操作之一,在以下内容中,我将详细讲解如何实现这个功能。 步骤一:添加事件触发器组件 首先,在需要变色的UI或物体上添加Event Trigger组件。在该组件下选择PointerEnter和PointerExit事件,并在事件右侧选择Add New。这样就可以添加新的触发事件。 在PointerE…

    C# 2023年6月3日
    00
  • 采用C#代码动态设置文件权限

    关于采用C#代码动态设置文件权限的完整攻略,我们可以分为以下几个步骤来实现: 引用命名空间我们需要引用System.Security.AccessControl和System.IO命名空间,前者是用来操作文件、文件夹的访问控制列表(ACL),后者则用来操作文件或文件夹。 设置文件夹路径或文件路径设置需要控制权限的文件夹路径或文件路径。 string path…

    C# 2023年6月1日
    00
  • C#列出当前系统所有正在运行程序的方法

    关于“C#列出当前系统所有正在运行程序的方法”的完整攻略,可以通过以下步骤来实现: 首先,需要引用System.Diagnostics命名空间,该命名空间提供了一些类,可以操作正在运行的进程,包括获取正在运行的进程信息。 接着,可以通过调用Process.GetProcesses()静态方法,来获取当前系统中正在运行的所有进程。该方法返回一个Process类…

    C# 2023年6月7日
    00
  • asp.net+ajax+sqlserver自动补全功能实现解析

    ASP.NET是一种用于创建Web应用程序的技术,它可以与AJAX和SQL Server等技术结合使用,实现各种功能。本文将介绍如何使用ASP.NET、AJAX和SQL Server实现自动补全功能。 步骤一:创建ASP.NET项目 首先,需要创建一个ASP.NET项目。可以使用Visual Studio创建一个新的ASP.NET项目。在创建项目时,可以选择…

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