C#数组查找与排序

C#各种数组排序方法介绍 1、冒泡排序 双层for循环,数组内部元素不断比较交换,最终排序。 时间复杂度为O(n²) private void bubbleSort(int[] array) { int median=0; for(int i=0;i<array.Length-1;i++) { for(int j=i+1;j<array.Length;j++) { ... 阅读详情

数组查找对象的方法一种是查找对象,一种是查找值 

1. 查找对象

Person p1  =   new  Person( " 名字1 " ,  18 );
Person p2 
=   new  Person( " 名字1 " ,  19 );
Person p3 
=   new  Person( " 名字1 " ,  20 );

Person[] persons 
=   { p1, p2, p3 } ;

//  查找p2所在数组中的位置
Array.IndexOf < Person > (persons, p2);

 

2. 查找值

Person p1  =   new  Person( " 名字1 " ,  18 );
Person p2 
=   new  Person( " 名字1 " ,  19 );
Person p3 
=   new  Person( " 名字1 " ,  20 );

Person[] persons 
=   { p1, p2, p3 } ;

Person p4 
=   new  Person(p2.Name, p2.Age);

//  查找数组中与p4相同的元素所在的位置
Array.IndexOf < Person > (persons, p4);

但是,这种方法必需使Person重载Object的 Equals 比较方法

public   override   bool  Equals( object  obj)
{
    Person person 
= obj as Person;
    
if (person == null) return false;
    
return (this.name == person.name && this.age == person.age);
}

 

第二种按对象的值查找的方法

实现IComparabler接口

public   int  CompareTo( object  obj)
{
    Person person 
= obj as Person;
    
if (person == null)
        
throw new Exception("The method or operation is not implemented.");

    
// 先从年龄开始比较
    int ageResult = this.age.CompareTo(person.age);

    
if (ageResult == 0)
    
{
        
// 如果年龄相等在坐姓名比较
        return this.name.CompareTo(person.name);
    }

    
else
    
{
        
return ageResult;
    }

}

实现了IComparable接口后就可以使用Array.BinarySearch()进行查找了

//  得到 person 在 persons 中有相同值的下标
//  如果多个相同的值,BinarySearch将取最后
//  一个有相同值的数组下标
Array.BinarySearch < Person > (persons, person);

注:使用Array.BinarySeach必须操作一个排序好的数组

3. 排序

只要对象实现了IComparable接口,就可以使用Array中静态的方法Sort进行排序

//  必需使比较的对象实现IComparable接口
Array.Sort < Person > (persons);

代码下载

C#里演示数组排序,然后进行二分法查找 二分法是一个高效的算法,一般情况下,对于有序数据,这种查找就是最高效的算法了。输入的数据是无序,一定要进行有序排列。 阅读详情

相关推荐

C#排序与查找(含代码)

C#排序与查找(含代码) 选择排序 冒泡排序

c#数组列表一些查找方法

S.这个问题与之前描述的“三元组最小距离”问题一致,给定三个升序排列的整数数组`a[]`(长度为l)、`b[]`(长度为m)和`c[]`(长度为n),要求找到这三个数组中的元素组成的三元组`(a[i], b[j], c[k])`,使得它们的距离`D = |a[i] - b[j]| + |b[j] - c[k]| + |c[k] - a[i]|`最小。插入排序的基本思想是将元素从数组的一端逐个插入到已排序的部分中,对于逆序操作,我们则需要从数组另一端开始,逐个将元素“插入”到未排序部分的头部。

m0_75039529的博客 3717

别再只用跳层连接了!手把手教你用DASI和MDCR模块提升红外小目标检测精度

本文详细介绍了如何利用DASI和MDCR模块提升红外小目标检测精度。通过分析传统跳层连接的缺陷,提出维度感知的特征选择性融合(DASI)和多尺度感受野精炼器(MDCR)的创新方案,显著提升小目标检测性能。实验证明,该方法在多个场景下AP@0.5提升达15.4%,特别适用于安防监控和遥感图像分析。

weixin_28715081的博客 224

找出当前值在数组中排第几

import java.util.*; public class Rank { Node root = null; //整棵树的根 public int[] getRankOfNumber(int[] A, int n) { // write code here int[] res = new int[n]; for(int i...

weixin_42246923的博客 1553

从零到一:如何用GraphRAG Visualizer打造你的第一个3D知识图谱

本文详细介绍了如何使用GraphRAG Visualizer从零开始构建3D知识图谱,涵盖环境准备、Parquet数据处理、可视化操作及高级分析功能。通过简洁的步骤和实用技巧,帮助用户快速掌握这一强大的知识图谱可视化工具,提升数据分析和关系挖掘效率。

rock5的博客 220

@transactional滥用导致数据源连接池耗尽问题

@transactional滥用导致数据源连接池耗尽问题

qq_43205267的博客 1201

C#编程之经典算法——查找(五)

KMP法匹配       通过之前的讲解,我们了解了如何从一个数组中查找单个元素,而这一篇,让我们来一起学习下如何快速地从一个数组A中找出与另一个数组B完全匹配的连续的元素(即B为A的子集)。      首先,我们来看下面的例子。      string A = "abcdabcaba"; //在这里,我们把string当作char[]      string B = "abc

yyhian的专栏 2766

工业质检实战:用海康VisionMaster的BLOB分析搞定PCB焊点缺陷检测

本文详细介绍了如何利用海康VisionMaster平台的BLOB分析技术,构建一套针对PCB焊点缺陷的自动化视觉检测方案。文章从核心原理出发,重点阐述了如何通过动态阈值分割和模板匹配定位,克服工业现场光照不均、位置偏移等挑战,实现虚焊、漏焊等缺陷的精准、稳定检测,并提供了实战调优与系统集成的关键思路。

weixin_29091105的博客 561

c#获取数组中指定元素的索引

      //获取元素的索引 ArrayList arrList = new ArrayList(); for (int i = 0; i < array.Length; i++) { if (array[i] == 8) { ...

weixin_30569001的博客 4410

Silvaco二极管、三极管、CMOS的制备

Silvaco二极管和三极管的制备

yytu231的博客 5749

【嵌入式Linux驱动开发】二十四、Linux I2C 驱动上手尝试

  人的前程关于眼界、关乎格局。   志之所趋,无远弗届,穷山复海不能限也;   志之所向,无坚不入,锐兵精甲不能御也。 一、I2C驱动框架简介   Linux内核将 I2C 驱动分为两部分: ①、 I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。 ②、 I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。 1....

悟已往之不谏 知来者之可追 1068

C#入门及进阶|数组和集合(五):数组的查找和排序

C#入门及进阶|数组和集合(五):数组的查找和排序

qq_46689623的博客 392

【信号与系统】Multisim 仿真信号合成与分解

软件 Multisim 进行方波信号的产生、分解和合成,观察信号波形的分解与合成,加深对信号频谱的理解。

AXYZdong的博客 2万+

C#基础语法——冒泡排序 选择排序 二分查找 二维数组 foreach

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 复习4 { class Program { static void Main(string[] args) ...

CDSN2017的博客 663

YOLO11 改进、魔改|分组残差自注意力GRSA,通过分组残差优化 QKV 计算、指数空间映射优化位置偏差,在大幅降低自注意力模块参数和计算量的同时,增强特征关系与位置信息的表征能力

【摘要】研究人员提出GRSA(分组残差自注意力)机制,解决Transformer在图像超分辨率任务中效率与性能难以兼顾的问题。GRSA通过分组残差层减少自注意力参数冗余,同时采用指数空间相对位置偏差优化位置信息表征。实验表明,GRSA在降低50%参数量的同时保持模型性能,适用于目标检测和图像分割任务。在YOLO系列模型中集成GRSA可提升小目标检测精度,代码实现已开源,详细部署教程见相关视频与GitHub资源。该机制为轻量化Transformer模型提供了高效解决方案。

qq_64693987的博客 798

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C#数组的应用:冒泡排序,折半查找及二维数组的应用

C#数组的应用:冒泡排序,折半查找及二维数组的应用 人类思维--计算机逻辑思维逻辑思维--代码实现 写书法:描红——临摹——碑贴——自成一体——草 复习:数组:一维,二维,多维一维:豆角。连续,同一类型。定义:数据类型[] 数组名=new 数据类型[长度]{.,.,.,.};赋值:数组名[下标] = 值取值:数组名[下标]灵活运用:与for循环的结合应用。1.求最大值,最小值。2.求总和,平...

weixin_30588675的博客 239

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

数组 - 34. 在排序数组中查找元素的第一个和最后一个位置(C#和C实现)

二分

Ammmmmmmmn的博客 772

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C#基础[数组,选择排序,折半查找]

数组 数组的定义 概念:同一种类型数据的集合 其实数组就是一个容器 数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素 格式: ...

Aarondwa的博客 569

c# 冒泡排序,折半查找。二维数组

(一).冒泡排序。 1.冒泡排序是用双层循环解决。外层循环的是趟数,里层循环的是次数。 2.趟数=n-1;次数=n-趟数。 3.里层循环使用if比较相临的两个数的大小,进行数值交换。 作业: 1.先把冒泡排序写一遍。 2.使用冒泡排序,做青歌赛的打分程序。要求去掉两个最高,两个最低分,求平均得分。 代码。 (二).折半查找。 前提:数组必须是有序的。 ...

diansuojian9479的博客 337

C# 已排序好的数组中查找数的位置

static int FindNumber(int[] array, int num) { int result = -1; if (array == null) { return result; } for (in...

weixin_30908649的博客 881

C#数组基本操作

Reverse,IndexOf,Sum()、Max()、Min()、Average(),Join,Split,IndexOfAny,LastIndexOfAny,Trim

优快云博客 4319

二维数组名代表什么_C#学习笔记04--排序/查找/二维数组/交叉数组

一. 冒泡排序(重点)思路: 每次比较把较小的放在前面, 大的放到后面;图解:下图是最坏情况下的排序冒泡排序m个元素, 就有(m-1)趟排序, 第一趟m-1次, 第二趟 m-2次.... 总结下来就是趟数加上次数就等于总的元素数;核心算法: int[] intNums = new int[] { 5, 4, 3, 2, 1 }; int tem...

weixin_39541189的博客 212

七、C#数组

数组 在内存中,数组存储在连续取悦的内部,因为数组中每个元素的类型形同,则占用的内存大小也一致,所以在访问数组中的元素时,可以直接根据数组在内存中的起始位置以及下标来计算元素的位置。因此数组访问速度很高。 在C#中,数组的下标(也称索引)是从0开始的。以后逐个递增,最大索引是数组元素总数减1 数组元素可以为任何数据类型,每个数组都有长度,为了方便管理在初始化数组时,必须指定数组的长度,而且一旦指定,长度就不能改变,除非在重新初始化该数组。 一维数组的声明 一维数组以线性方式存储固定数据的数组元素,它

Mwyldnje2003的博客 1869

数组(随机生成,三种排序,二分查找)

namespace keshanglianxi6.28_2 {     class Program     {         static void Main(string[] args)         {             Random ra = new Random();             int[] arr = new int[10];             for (in

陈言必行 -- Unity游戏开发领域优质博主 984
上一篇: 接触 Firebug
下一篇: C#2.0 常用集合
LEOlws
博客等级 码龄21年 9粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值