C#數(shù)組排序的兩種常用方法
本文實(shí)例講述了C#數(shù)組排序的兩種常用方法。分享給大家供大家參考。具體如下:
1.第一個(gè)例子
定義代碼
#region Array數(shù)組排序1
public class Pigeon : IComparable<Pigeon>
//類元素本身繼承比較接口
{
int XValue;
int YValue;
public string BatchNo { get; set; }
public int CompareTo(Pigeon other)
{
if (other == null)
throw new ArgumentNullException("比較參數(shù)為空");
//按第三個(gè)字符比較
XValue = Convert.ToInt32(this.BatchNo.Substring(2, 1));
YValue = Convert.ToInt32(other.BatchNo.Substring(2, 1));
if (XValue == YValue)
{
return 0;
}
else if (XValue < YValue)
{
return -1; //返回-1,X排在Y的前面
}
else
{
return 1; //返回1,X排在Y的后面
}
}
}
#endregion
測(cè)試代碼
#region 測(cè)試Array數(shù)組排序1
private void button3_Click(object sender, EventArgs e)
{
Pigeon[] pigeons = new Pigeon[]{
new Pigeon(){BatchNo="1256"},
new Pigeon(){BatchNo="1236"},
new Pigeon(){BatchNo="1276"},
new Pigeon(){BatchNo="1216"}
};
Array.Sort(pigeons);
string ResultMsg = "";
foreach (Pigeon o in pigeons)
{
ResultMsg += o.BatchNo + "\r\n";
}
MessageBox.Show(ResultMsg);
}
#endregion
1.第二個(gè)例子
定義代碼
#region Array數(shù)組排序
public class MyBatch //數(shù)組元素類
{
public string BatchNo { get; set; }
}
public enum CompareType //比較類型枚舉
{
ThreeChar =0,
FourChar=1
}
public class MyBatchCompare:IComparer<MyBatch>
//定義了一個(gè)比較類
{
private CompareType compareType;//定義排序類型
public MyBatchCompare(CompareType compareType)
{
//構(gòu)造函數(shù)中初始化比較類型
this.compareType = compareType;
}
public int Compare(MyBatch x, MyBatch y)
{
int XValue;
int YValue;
if (x == null) throw new ArgumentNullException("x值為空");
if (y == null) throw new ArgumentNullException("y值為空");
switch (compareType)
{
case CompareType.ThreeChar:
//按第三個(gè)字符比較從小到大排序
XValue = Convert.ToInt32(x.BatchNo.Substring(2,1));
YValue = Convert.ToInt32(y.BatchNo.Substring(2,1));
if (XValue == YValue)
{
return 0;
}
else if (XValue < YValue)
{
return -1; //返回-1,X排在Y的前面
}
else
{
return 1; //返回1,X排在Y的后面
}
case CompareType.FourChar:
//按第四個(gè)字符比較從小到大排序
XValue = Convert.ToInt32(x.BatchNo.Substring(3,1));
YValue = Convert.ToInt32(y.BatchNo.Substring(3,1));
if (XValue == YValue)
{
return 0;
}
else if (XValue < YValue)
{
return -1; //返回-1,X排在Y的前面
}
else
{
return 1; //返回1,X排在Y的后面
}
default:
throw new ArgumentException("比較類型參數(shù)錯(cuò)誤");
}
}
}
#endregion
測(cè)試代碼
#region Array數(shù)組排序
private void button2_Click(object sender, EventArgs e)
{
MyBatch[] batchs ={
new MyBatch(){BatchNo="1234"},
new MyBatch(){BatchNo="1263"},
new MyBatch(){BatchNo="1218"},
new MyBatch(){BatchNo="1242"}
};
//按第三個(gè)字符從小到大排
Array.Sort(batchs,new MyBatchCompare(CompareType.ThreeChar));
string ResultMsg = "";
foreach (MyBatch o in batchs)
{
ResultMsg += o.BatchNo + "\r\n";
}
MessageBox.Show(ResultMsg);
//按第四個(gè)字符從小到大排序
Array.Sort(batchs, new MyBatchCompare(CompareType.FourChar));
ResultMsg = "";
foreach (MyBatch o in batchs)
{
ResultMsg += o.BatchNo + "\r\n";
}
MessageBox.Show(ResultMsg);
}
#endregion
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- C#二維數(shù)組基本用法實(shí)例
- C#使用foreach語(yǔ)句遍歷二維數(shù)組的方法
- C#實(shí)現(xiàn)對(duì)二維數(shù)組排序的方法
- c#基礎(chǔ)之?dāng)?shù)組與接口使用示例(遍歷數(shù)組 二維數(shù)組)
- C# 數(shù)組查找與排序?qū)崿F(xiàn)代碼
- C#基礎(chǔ)之?dāng)?shù)組排序、對(duì)象大小比較實(shí)現(xiàn)代碼
- C#實(shí)現(xiàn)對(duì)數(shù)組進(jìn)行隨機(jī)排序類實(shí)例
- C#使用linq對(duì)數(shù)組進(jìn)行篩選排序的方法
- C#數(shù)組反轉(zhuǎn)與排序?qū)嵗治?/a>
- C#實(shí)現(xiàn)的二維數(shù)組排序算法示例
相關(guān)文章
C#?使用EntityFramework?CodeFirst?創(chuàng)建PostgreSQL數(shù)據(jù)庫(kù)的詳細(xì)過(guò)程
這篇文章主要介紹了C#使用EntityFramework?CodeFirst創(chuàng)建PostgreSQL數(shù)據(jù)庫(kù)的過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
C# 用什么方法將BitConverter.ToString產(chǎn)生字符串再轉(zhuǎn)換回去
這篇文章主要介紹了C# 用什么方法將BitConverter.ToString產(chǎn)生字符串再轉(zhuǎn)換回去,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
WPF TextBox實(shí)現(xiàn)按字節(jié)長(zhǎng)度限制輸入功能
這篇文章主要為大家詳細(xì)介紹了WPF TextBox實(shí)現(xiàn)按字節(jié)長(zhǎng)度限制輸入功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
C#創(chuàng)建WebService接口并連接的全過(guò)程
工作時(shí)遇到需要請(qǐng)求客戶的接口返回?cái)?shù)據(jù),要求使用WebService,借此機(jī)會(huì)記錄一下,下面這篇文章主要給大家介紹了關(guān)于C#創(chuàng)建WebService接口并連接的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
C# Windows API應(yīng)用之基于FlashWindowEx實(shí)現(xiàn)窗口閃爍的方法
這篇文章主要介紹了C# Windows API應(yīng)用之基于FlashWindowEx實(shí)現(xiàn)窗口閃爍的方法,結(jié)合實(shí)例形式分析了Windows API函數(shù)FlashWindowEx的功能、定義及實(shí)現(xiàn)窗口閃爍的相關(guān)技巧,需要的朋友可以參考下2016-08-08
C#/VB.NET實(shí)現(xiàn)在PDF文檔中插入,替換或刪除圖片
這篇文章主要為大家詳細(xì)介紹了如何使用 Spire.PDF for .NET 通過(guò)程序在 PDF 文檔中插入、替換或刪除圖片,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12

