C#數(shù)組排序的兩種常用方法
更新時間:2015年05月15日 11:17:41 作者:永遠(yuǎn)愛好寫程序
這篇文章主要介紹了C#數(shù)組排序的兩種常用方法,實例分析了C#操作數(shù)組的相關(guān)技巧,需要的朋友可以參考下
本文實例講述了C#數(shù)組排序的兩種常用方法。分享給大家供大家參考。具體如下:
1.第一個例子
定義代碼
#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ù)為空");
//按第三個字符比較
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
測試代碼
#region 測試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.第二個例子
定義代碼
#region Array數(shù)組排序
public class MyBatch //數(shù)組元素類
{
public string BatchNo { get; set; }
}
public enum CompareType //比較類型枚舉
{
ThreeChar =0,
FourChar=1
}
public class MyBatchCompare:IComparer<MyBatch>
//定義了一個比較類
{
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:
//按第三個字符比較從小到大排序
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:
//按第四個字符比較從小到大排序
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ù)錯誤");
}
}
}
#endregion
測試代碼
#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"}
};
//按第三個字符從小到大排
Array.Sort(batchs,new MyBatchCompare(CompareType.ThreeChar));
string ResultMsg = "";
foreach (MyBatch o in batchs)
{
ResultMsg += o.BatchNo + "\r\n";
}
MessageBox.Show(ResultMsg);
//按第四個字符從小到大排序
Array.Sort(batchs, new MyBatchCompare(CompareType.FourChar));
ResultMsg = "";
foreach (MyBatch o in batchs)
{
ResultMsg += o.BatchNo + "\r\n";
}
MessageBox.Show(ResultMsg);
}
#endregion
希望本文所述對大家的C#程序設(shè)計有所幫助。
您可能感興趣的文章:
- C#二維數(shù)組基本用法實例
- C#使用foreach語句遍歷二維數(shù)組的方法
- C#實現(xiàn)對二維數(shù)組排序的方法
- c#基礎(chǔ)之?dāng)?shù)組與接口使用示例(遍歷數(shù)組 二維數(shù)組)
- C# 數(shù)組查找與排序?qū)崿F(xiàn)代碼
- C#基礎(chǔ)之?dāng)?shù)組排序、對象大小比較實現(xiàn)代碼
- C#實現(xiàn)對數(shù)組進(jìn)行隨機排序類實例
- C#使用linq對數(shù)組進(jìn)行篩選排序的方法
- C#數(shù)組反轉(zhuǎn)與排序?qū)嵗治?/a>
- C#實現(xiàn)的二維數(shù)組排序算法示例
相關(guān)文章
WPF如何利用附加屬性修改ShowGridLines效果詳解
這篇文章主要給大家介紹了關(guān)于WPF如何利用附加屬性修改ShowGridLines效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2018-04-04
C#利用Openxml讀取Excel數(shù)據(jù)實例
這篇文章主要介紹了C#利用Openxml讀取Excel數(shù)據(jù)的方法,包括使用中的注意點分析及疑難探討,需要的朋友可以參考下2014-09-09
C# 使用 WebBrowser 實現(xiàn) HTML 轉(zhuǎn)圖片功能的示例代碼
這篇文章主要介紹了C# 如何使用 WebBrowser 實現(xiàn) HTML 轉(zhuǎn)圖片功能,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
winform創(chuàng)建不規(guī)則窗體的方法
這篇文章主要介紹了winform創(chuàng)建不規(guī)則窗體的方法,涉及C#窗體創(chuàng)建的相關(guān)參數(shù)設(shè)置技巧,非常具有實用價值,需要的朋友可以參考下2015-09-09

