C# 排序的多种实现方式(经典)

一、 对数组进行排序

最常见的排序是对一个数组排序,比如:

 int[] aArray = new int[8] { 18, 17, 21, 23, 11, 31, 27, 38 };

 1、利用冒泡排序进行排序:

(即每个值都和它后面的数值比较,每次拿出最小值)


static void Main(string[] args){int[] aArray = new int[8] { 18, 17, 21, 23, 11, 31, 27, 38 };for (int j = 0; j < aArray.Length - 1; j++){for (int i = 0; i < aArray.Length - 1; i++){if (aArray[i] > aArray[i + 1]){int temp = aArray[i];aArray[i] = aArray[i + 1];aArray[i + 1] = temp;}}}foreach (var a in aArray){Console.Write($"{a} ");}Console.ReadKey();}

运行结果:

2、利用Array.Sort排序:

1升序
 static void Main(string[] args){int[] aArray = new int[8] { 18, 17, 21, 23, 11, 31, 27, 38 };Array.Sort(aArray);foreach (var a in aArray){Console.Write($"{a} ");}Console.ReadKey();}

运行结果:

2降序:

 先升序排列,然后对数组反转

 static void Main(string[] args){int[] aArray = new int[8] { 18, 17, 21, 23, 11, 31, 27, 38 };Array.Sort(aArray);//数组排序(默认升序)Array.Reverse(aArray);//数组反转foreach (var a in aArray){Console.Write($"{a} ");}Console.ReadKey();}

运行结果:

二、对List进行排序

  大多数时候,我们需要将list集合里面的数据进行排序,

1、利用List<T> 自带的Sort排序方法 

    1 、升序排序
aList.Sort();
2、降序排序
  aList.Sort();//升序aList.Reverse();//反转
3 sort也可以用如下方式操作:

list.Sort((a, b) => a.CompareTo(b));//升序
list.Sort((a, b) => b.CompareTo(a));//降序

2、利用List的OrderBy与OrderByDescending方法

    升序排列:
List<int> aList = new List<int> { 18, 17, 21, 23, 11, 31, 27, 38 };aList = aList.OrderBy(a => a).ToList();
降序排列:
 List<int> aList = new List<int> { 18, 17, 21, 23, 11, 31, 27, 38 };aList = aList.OrderByDescending(a => a).ToList();
利用link,这种感觉和方法二是一回事
List<int> aList = new List<int> { 18, 17, 21, 23, 11, 31, 27, 38 };aList = (from a in aList orderby a ascending select a).ToList();//升序aList = (from a in aList orderby a descending select a).ToList();//降序

如果集合里存放的是一个类型,比如:

学生类:

 public class Student{public string name { get; set; }public int age { get; set; }public int score { get; set; }public override string ToString(){return $"姓名是:{name},年龄是:{age},得分是:{score}";}}

方法一:stuList.Sort((x, y) => x.score.CompareTo(y.score));

static void Main(string[] args){List<Student> stuList = new List<Student>{new Student() {name = "zyr", age = 23, score = 99},new Student() {name = "zls", age = 25, score = 95},new Student() {name = "zsq", age = 27, score = 100},new Student() {name = "zlw", age = 15, score = 69},new Student() {name = "ywe", age = 17, score = 72},new Student() {name = "asw", age = 29, score = 58}};//方法1 升序//stuList.Sort((x, y) => x.score.CompareTo(y.score));stuList = stuList.OrderBy(stu=>stu.score).ToList();foreach (var stu in stuList){Console.WriteLine($"{stu}");}Console.ReadKey();}

方法二: 加入这个学生成绩有重复的,对于重复的成绩按照年龄再排序:
 方法1 升序stuList.Sort((x, y) =>{int ret = x.score.CompareTo(y.score);if (ret == 0){return x.age.CompareTo(y.age);}else{return ret;}});方法2 升序stuList = stuList.OrderBy(stu => stu.score).ThenBy(stu => stu.age).ToList();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/585650.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机照片误删了怎么恢复?如何从 iPhone 恢复已删除的照片

照片是最容易从 iPhone 中意外删除的项目之一。好消息是它们也是最容易恢复的数据类型之一。至少&#xff0c;如果您一开始没有特意删除它们的话&#xff0c;它们是这样的。 如果你忘记了它们&#xff0c;情况就会变得更加困难。不过&#xff0c;您仍然有其他选择&#xff0c;…

【项目管理】史上最全的项目管理常用工具模板大合集

以下是资料目录&#xff0c;如需下载&#xff0c;请前往星球获取&#xff0c;海量免费资源等你领取&#xff1a;https://t.zsxq.com/18CJ6ZMZX 一、CMMI 3标准文档模板 1.CMMI3级精简并行过程综述 2.立项管理 3.结项管理 4.项目规划 5.项目监控 6.风险管理 7.需求管理 8.需求开…

win11安装WSL UbuntuTLS

win11安装WSL WSL 简介WSL 1 VS WSL 2先决要求安装方法一键安装通过「控制面板」安装 WSL 基本命令Linux发行版安装Ubuntu初始化相关设置root用户密码网络工具安装安装1panel面板指导 WSl可视化工具问题总结WSL更新命令错误Ubuntu 启动初始化错误未解决问题 WSL 简介 Windows …

vuepress-theme-hope 添加谷歌统计代码

最近做了个网站,从 cloudflare 来看访问量,过去 30 天访问量竟然有 1.32k 给我整懵逼了,我寻思不应该呀,毕竟这个网站内容还在慢慢补充中,也没告诉别人,怎么就这么多访问?搜索了下, cloudflare 还会把爬虫的请求也就算进来,所以数据相对来说就不是很准确 想到了把 Google An…

【STM32嵌入式系统设计与开发】——14PWM(pwm脉宽输入应用)

这里写目录标题 一、任务描述二、任务实施1、WWDG工程文件夹创建2、函数编辑&#xff08;1&#xff09;主函数编辑&#xff08;2&#xff09;USART1初始化函数(usart1_init())&#xff08;3&#xff09;USART数据发送函数&#xff08; USART1_Send_Data&#xff08;&#xff09…

C# wpf 实现底部嵌入HwndHost

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件 第三章 嵌入WPF控件 第四章 底部嵌入HwndHost&#xff08;本章&#xff09; 文章目录 WPF Hwnd窗口互操作系列前言一、如何实现&#xff1f;1、底部创建窗口&#xff08;1&#xff09;、创建透明窗口&…

如何理解模板?

文章目录 1. 泛型编程2.函数模板2.1函数模板概念2.1函数模板格式2.3函数模板的原理2.4函数模板的实例化2.5模板参数的匹配原则 3.类模板3.1类模板的定义格式3.2类模板的实例化 1. 泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int& left, int& right)…

4t 15届第3套模拟

一、Seg &#xff01;&#xff01;&#xff01;难点 1.上下限&#xff1a; 这种上下限的有种情况是 ①通过按键直接实现&#xff1a;那就是按一下一下 ②通过按键操作标志位在数码管实现&#xff1a;我没要对他进行操作&#xff0c;但是默认就是0&#xff0c;那你不能0就吧&a…

配置 施耐德 modbusTCP 分布式IO子站 RPA0100

1. 总体步骤 2. 软件组态&#xff1a;在 Unity Pro 软件中创建编辑 PRA 模块工程 2.1 新建项目 模块箱硬件型号如下 点击 Unity Pro 软件左上方【新建】按钮&#xff0c;选择正确的 DIO 模块型号、背板型号 2.2 模块组态 2.2.1 拖拽添加模块 双击【配置】菜单下的【0&…

安全防御产品—锐安盾重磅上线,助力更安全、更流畅的业务体验

在互联网时代&#xff0c;互联网技术蓬勃发展&#xff0c;然而&#xff0c;随之而来的网络安全问题也备受关注。诸如DDoS攻击、CC攻击、常见Web攻击等攻击手段突如其来&#xff0c;导致企业业务中断&#xff0c;严重影响企业业务正常运行。对此&#xff0c;锐成云重磅推出安全防…

数据删除如何恢复?使用 3 个适用于 Windows 的最佳数据恢复工具方法

您是否在将重要文件从一个位置移动到另一个位置时丢失了这些文件&#xff0c;或者在此过程中意外删除了它们&#xff1f;您是否在恶意软件损坏外部存储设备后格式化外部存储设备时丢失了数据&#xff1f;即使您没有备份也不必担心。 3 个适用于 Windows 的最佳数据恢复工具方法…

【计算机网络】select/poll

多路转接 - select/poll 一、I/O 多路转接之 select1. select 接口2. select 的使用3. select 的优缺点 二、I/O 多路转接之 poll1. poll 接口2. poll 的使用3. poll 与 select 的对比 一、I/O 多路转接之 select 多路转接属于 IO 复用方式的一种。系统提供 select() 函数来实…