狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 排序的多種實(shí)現(xiàn)方式(經(jīng)典)

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

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

01


數(shù)組排序


最常見(jiàn)的排序是對(duì)一個(gè)數(shù)組排序,比如:

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


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

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

運(yùn)行結(jié)果:


第二種:利用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();        }

運(yùn)行結(jié)果:



② 降序排列:先升序排列,然后對(duì)數(shù)組反轉(zhuǎn)

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


運(yùn)行結(jié)果:






02



List排序

大多數(shù)時(shí)候,我們需要將list集合里面的數(shù)據(jù)進(jìn)行排序,

① 如果list直接放置的數(shù)值類(lèi)型的數(shù)據(jù)就比較簡(jiǎn)單,比如:

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,這種感覺(jué)和方法二是一回事

 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存放的是一個(gè)類(lèi)型,比如:


方法一: 一個(gè)集合存放學(xué)生的信息,按照學(xué)生的成績(jī)升序排列:這里列舉了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}";            }        }


運(yùn)行結(jié)果:


方法二: 加入這個(gè)學(xué)生成績(jī)有重復(fù)的,對(duì)于重復(fù)的成績(jī)按照年齡再排序:這里列舉了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 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved