直接张贴代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; namespace ConsoleApplication8 { class Program { static void Main(string[] args) { double[,] values = new double[4, 2] { { 1, 3 }, { 4, 2 }, { 5, 8 }, { 7, 15 } }; print2screen(values); try { sort2print(values,0); } catch { Console.WriteLine("sth wrong!!!!!!!!!!!!!!"); Console.WriteLine(" "); } } private static void sort2print(double[,] values,int order) { Sort(values, order, "DESC"); print2screen(values); } private static void print2screen(double[,] values) { for (int i = 0; i < values.GetLength(0); i++) { for (int k = 0; k < values.GetLength(1); k++) { Console.Write(values[i, k]); Console.Write(" "); } Console.Write(" "); } Console.WriteLine(" "); } /// <summary> /// A generic routine to sort a two dimensional array of a specified type based on the specified column. /// </summary> /// <param name="array">The array to sort.</param> /// <param name="sortCol">The index of the column to sort.</param> /// <param name="order">Specify "DESC" or "DESCENDING" for a descending sort otherwise /// leave blank or specify "ASC" or "ASCENDING".</param> /// <remarks>The original array is sorted in place.</remarks> /// <see cref="http://stackoverflow.com/questions/232395/how-do-i-sort-a-two-dimensional-array-in-c"/> private static void Sort<T>(T[,] array, int sortCol, string order) { int colCount = array.GetLength(1), rowCount = array.GetLength(0); if (sortCol >= colCount || sortCol < 0) throw new System.ArgumentOutOfRangeException("sortCol", "The column to sort on must be contained within the array bounds."); DataTable dt = new DataTable(); // Name the columns with the second dimension index values, e.g., "0", "1", etc. for (int col = 0; col < colCount; col++) { DataColumn dc = new DataColumn(col.ToString(), typeof(T)); dt.Columns.Add(dc); } // Load data into the data table: for (int rowindex = 0; rowindex < rowCount; rowindex++) { DataRow rowData = dt.NewRow(); for (int col = 0; col < colCount; col++) rowData[col] = array[rowindex, col]; dt.Rows.Add(rowData); } // Sort by using the column index = name + an optional order: DataRow[] rows = dt.Select("", sortCol.ToString() + " " + order); for (int row = 0; row <= rows.GetUpperBound(0); row++) { DataRow dr = rows[row]; for (int col = 0; col < colCount; col++) { array[row, col] = (T)dr[col]; } } dt.Dispose(); } } }
参考:
1、C#实现对二维数组排序的方法