欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 排序的多種實現方式(經典)

admin
2024年3月19日 10:35 本文熱度 650

   排序是我們編程時的常用操作,實現方式也有很多種,本篇文章列舉幾種我常用的用法,希望對大家有用!

01


數組排序


最常見的排序是對一個數組排序,比如:

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


第一種:我們最熟悉的冒泡排序法:即每個值都和它后面的數值比較,每次拿出最小值

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();        }

運行結果:


第二種:利用Array.Sort排序:

① 升序排列:

 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();        }

運行結果:



② 降序排列:先升序排列,然后對數組反轉

  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();        }


運行結果:






02



List排序

大多數時候,我們需要將list集合里面的數據進行排序,

① 如果list直接放置的數值類型的數據就比較簡單,比如:

List<int> aList = new List<int> { 18, 17, 21, 23, 11, 31, 27, 38 };

方法一:利用List<T> 自帶的Sort排序方法 

升序排列:

aList.Sort();

降序排列:

aList.Sort();
aList.Reverse();

sort也可以用如下方式操作:

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


方法二:利用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();//降序


②如果list存放的是一個類型,比如:


方法一: 一個集合存放學生的信息,按照學生的成績升序排列:這里列舉了2種方法,方法一注釋了


 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));            //方法2 升序            stuList = stuList.OrderBy(stu=>stu.score).ToList();
           foreach (var stu in stuList)            {                Console.WriteLine($"{stu}");            }            Console.ReadKey();        }
       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}";            }        }


運行結果:


方法二: 加入這個學生成績有重復的,對于重復的成績按照年齡再排序:這里列舉了2種方法,方法一注釋了


 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 = "zls", age = 22, 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},                new Student() {name = "ywe", age = 18, score = 72},                new Student() {name = "zsq", age = 16, score = 100},            };
           //方法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();
           foreach (var stu in stuList)            {                Console.WriteLine($"{stu}");            }            Console.ReadKey();        }
       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}";            }        }


該文章在 2024/3/19 10:35:08 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved