国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#實現(xiàn)的二維數(shù)組排序算法示例

2020-01-24 00:22:25
字體:
供稿:網(wǎng)友

本文實例講述了C#實現(xiàn)的二維數(shù)組排序算法。分享給大家供大家參考,具體如下:

class Order{  /// <summary>  /// 對二維數(shù)組排序  /// </summary>  /// <param name="values">排序的二維數(shù)組</param>  /// <param name="orderColumnsIndexs">排序根據(jù)的列的索引號數(shù)組</param>  /// <param name="type">排序的類型,1代表降序,0代表升序</param>  /// <returns>返回排序后的二維數(shù)組</returns>  public static object[,] Orderby(object[,] values, int[] orderColumnsIndexs, int type)  {   object[] temp = new object[values.GetLength(1)];   int k;   int compareResult;   for (int i = 0; i < values.GetLength(0); i++)   {    for (k = i + 1; k < values.GetLength(0); k++)    {     if (type.Equals(1))     {      for (int h = 0; h < orderColumnsIndexs.Length; h++)      {       compareResult = Comparer.Default.Compare(GetRowByID(values, k).GetValue(orderColumnsIndexs[h]), GetRowByID(values, i).GetValue(orderColumnsIndexs[h]));       if (compareResult.Equals(1))       {        temp = GetRowByID(values, i);        Array.Copy(values, k * values.GetLength(1), values, i * values.GetLength(1), values.GetLength(1));        CopyToRow(values, k, temp);       }       if (compareResult != 0)        break;      }     }     else     {      for (int h = 0; h < orderColumnsIndexs.Length; h++)      {       compareResult = Comparer.Default.Compare(GetRowByID(values, k).GetValue(orderColumnsIndexs[h]), GetRowByID(values, i).GetValue(orderColumnsIndexs[h]));       if (compareResult.Equals(-1))       {        temp = GetRowByID(values, i);        Array.Copy(values, k * values.GetLength(1), values, i * values.GetLength(1), values.GetLength(1));        CopyToRow(values, k, temp);       }       if (compareResult != 0)        break;      }     }    }   }   return values;  }  /// <summary>  /// 獲取二維數(shù)組中一行的數(shù)據(jù)  /// </summary>  /// <param name="values">二維數(shù)據(jù)</param>  /// <param name="rowID">行ID</param>  /// <returns>返回一行的數(shù)據(jù)</returns>  static object[] GetRowByID(object[,] values, int rowID)  {   if (rowID > (values.GetLength(0) - 1))    throw new Exception("rowID超出最大的行索引號!");   object[] row = new object[values.GetLength(1)];   for (int i = 0; i < values.GetLength(1); i++)   {    row[i] = values[rowID, i];   }   return row;  }  /// <summary>  /// 復(fù)制一行數(shù)據(jù)到二維數(shù)組指定的行上  /// </summary>  /// <param name="values"></param>  /// <param name="rowID"></param>  /// <param name="row"></param>  static void CopyToRow(object[,] values, int rowID, object[] row)  {   if (rowID > (values.GetLength(0) - 1))    throw new Exception("rowID超出最大的行索引號!");   if (row.Length > (values.GetLength(1)))    throw new Exception("row行數(shù)據(jù)列數(shù)超過二維數(shù)組的列數(shù)!");   for (int i = 0; i < row.Length; i++)   {    values[rowID, i] = row[i];   }  }}static void Main(string[] args){   object[,] o = new object[6, 4] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, { 13, 14, 11, 12 }, { 15, 16, 11, 17, }, { 5, 6, 7,9 } };   Console.WriteLine("沒排序前的二維數(shù)組:");   Print(o);   Console.WriteLine("根據(jù)第3,4列升序排序后的數(shù)組:");   Order.Orderby(o, new int[] { 2,3 },0);   Print(o);   Console.WriteLine("根據(jù)第3,4列降序序排序后的數(shù)組:");   Order.Orderby(o, new int[] { 2, 3 }, 1);   Print(o);   Console.Read();}static void Print(object[,] values){   int k;   for (int i = 0; i < values.GetLength(0);i++ )   {    for (k = 0; k < values.GetLength(1);k++ )    {     Console.Write(values[i,k]);     Console.Write(" ");    }    Console.WriteLine(" ");   }}

運行結(jié)果:

沒排序前的二維數(shù)組:1 2 3 45 6 7 89 10 11 1213 14 11 1215 16 11 175 6 7 9根據(jù)第3,4列升序排序后的數(shù)組:1 2 3 45 6 7 85 6 7 913 14 11 129 10 11 1215 16 11 17根據(jù)第3,4列降序序排序后的數(shù)組:15 16 11 179 10 11 1213 14 11 125 6 7 95 6 7 81 2 3 4

更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#數(shù)組操作技巧總結(jié)》、《C#遍歷算法與技巧總結(jié)》、《C#程序設(shè)計之線程使用技巧總結(jié)》、《C#中XML文件操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》及《C#面向?qū)ο蟪绦蛟O(shè)計入門教程

希望本文所述對大家C#程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 台山市| 法库县| 东乡县| 安康市| 旌德县| 大余县| 宝坻区| 高淳县| 天长市| 阳城县| 宁德市| 宜黄县| 泌阳县| 浦江县| 宁波市| 高邑县| 丹江口市| 汝南县| 黄平县| 祁门县| 富源县| 肃北| 楚雄市| 弥勒县| 安龙县| 策勒县| 温泉县| 宾川县| 新丰县| 大英县| 黔西县| 都江堰市| 太白县| 桂阳县| 义马市| 冀州市| 桂林市| 九龙县| 兴海县| 集贤县| 淮南市|