C#排序

正在看Siki的C#教程,正好看到委托部分,复习了冒泡排序,就自己写了下:

using System;
using System.Collections.Generic;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> all = new List<int>() { 1, 6, 8, 2, 5, 3, 9, 20 };

            int j, temp;
            for (int i = 0; i < all.Count - 1; i++)
            {
                for (j = 0; j < all.Count - 1 - i; j++)
                {
                    if (all[j] > all[j + 1])
                    {
                        temp = all[j];
                        all[j] = all[j + 1];
                        all[j + 1] = temp;
                    }
                }
            }
            for (int k = 0; k < all.Count; k++)
            {
                Console.WriteLine(all[k]);
            }
        }
    }
}

输出结果:

C#中,排序是一项常见的操作,可以对数组、列表等各种集合类型的数据进行排列。以下是几种常用的排序方式: ### 1. 使用 `Array.Sort()` 对数组进行排序 `Array.Sort()` 是 C# 中最简单的方式之一用于对一维数组进行升序排序。 **示例:** ```csharp int[] numbers = {5, 3, 8, 4, 9}; Array.Sort(numbers); foreach (var num in numbers) { Console.WriteLine(num); // 输出结果将按升序打印数字 } ``` ### 2. 利用 LINQ 查询表达式或方法语法排序 List<T> 对于泛型列表(如 `List<int>` 或者自定义对象类型的 `List<MyObject>`),您可以借助 Language Integrated Query (LINQ) 进行更复杂的查询和排序任务。 #### 升序排序: ```csharp using System.Linq; ... List<int> listNumbers = new() {7, -2, 6, 0, 1}; var sortedAsc = from n in listNumbers orderby n select n; // 查询表达式形式 // 或者使用方法语法 var sortedAscMethodSyntax = listNumbers.OrderBy(n => n).ToList(); ``` #### 降序排序: 只需添加 `.OrderByDescending(...)` 替换掉普通的 `OrderBy(...)` ```csharp var sortedDesc = from n in listNumbers orderby n descending select n; // 等效于 listNumbers.OrderByDescending(x => x); ``` ### 3. 自定义比较器实现复杂规则下的排序 当您需要按照特定属性或是更为复杂的条件来进行排序,则可以通过创建实现了 IComparer 接口的类来自定义比较逻辑,并将其传递给 Array.Sort(), List<T>.Sort()等函数作为第三个参数;或者是直接传入 lambda 表达式的委托来简化代码编写过程。 例如我们有一个包含学生信息的对象集合想先依据年龄大小再根据姓名字母顺序排: ```csharp public class Student : IComparable<Student> { public string Name { get; set; } public int Age { get; set; } public int CompareTo(Student other) { if (this.Age != other.Age) return this.Age.CompareTo(other.Age); return String.Compare(this.Name, other.Name); } } ... List<Student> students = new(){ new Student{Name="Tom",Age=21}, new Student{Name="Jerry",Age=20}, ... }; students.Sort(); // 默认采用CompareTo方式进行排序 ``` 以上就是关于如何在C#语言环境中完成基本到高级层次的不同种类数据结构上应用排序算法的一些基础知识了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

末零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值