二维数组的列排序
来源:互联网 发布:知柏地黄丸治疗性早熟 编辑:程序博客网 时间:2024/05/16 23:04
定义数组
double[,] WorkColor = new double[15, 5]
排序类
public class Order { /**//// <summary> /// 对二维数组排序 /// </summary> /// <param name="values">排序的二维数组</param> /// <param name="orderColumnsIndexs">排序根据的列的索引号数组</param> /// <param name="type">排序的类型,1代表降序,0代表升序</param> /// <returns>返回排序后的二维数组</returns> public static double[,] Orderby(double[,] values, int[] orderColumnsIndexs, int type) { double[] temp = new double[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; }//打印数组 public static void Print(double[,] 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("\t"); } Console.WriteLine(" "); } } /**//// <summary> /// 获取二维数组中一行的数据 /// </summary> /// <param name="values">二维数据</param> /// <param name="rowID">行ID</param> /// <returns>返回一行的数据</returns> static double[] GetRowByID(double[,] values, int rowID) { if (rowID > (values.GetLength(0) - 1)) throw new Exception("rowID超出最大的行索引号!"); double[] row = new double[values.GetLength(1)]; for (int i = 0; i < values.GetLength(1); i++) { row[i] = values[rowID, i]; } return row; } /**//// <summary> /// 复制一行数据到二维数组指定的行上 /// </summary> /// <param name="values"></param> /// <param name="rowID"></param> /// <param name="row"></param> static void CopyToRow(double[,] values, int rowID, double[] row) { if (rowID > (values.GetLength(0) - 1)) throw new Exception("rowID超出最大的行索引号!"); if (row.Length > (values.GetLength(1))) throw new Exception("row行数据列数超过二维数组的列数!"); for (int i = 0; i < row.Length; i++) { values[rowID, i] = row[i]; } } }
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组的列排序
- 二维数组列排序
- 对二维数组的行、列排序
- 二维数组排序--指定数组列排序
- [华为机试练习题]21.二维数组的列排序
- 针对二维数组,实现多列排序
- php 二维数组按照某列排序
- php二维数组按指定列排序
- 对二维数组进行按列排序
- 二维数组的列交换
- 二维数组的排序
- 二维数组的排序
- 二维数组的排序
- TCP扫描器的简单实现
- 总线乔芯片
- An introduction of Messagepack
- python 的property函数
- 不放弃
- 二维数组的列排序
- setuid函数的学习笔记 转自:http://blog.chinaunix.net/space.php?uid=1877180&do=blog&cuid=1132108
- 对一道微软面试题的思考
- Google App Engine: Another transaction by user xxx is already in progress for app yyy ...
- [JavaScript] 慎用window.event.cancelBubble
- Oracle 层次查询-学习笔记
- [架构]F1Engine v0.1 alpha使用说明
- UIColor:RGB和HSV互相转换
- Xcode 4 Document Types and Exported UTIs