zoukankan      html  css  js  c++  java
  • 二维数组或矩阵按照某一列排序

    直接张贴代码

    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#实现对二维数组排序的方法

     

  • 相关阅读:
    DAY67-前端入门-javascript(十三) vue03
    DAY66-前端入门-javascript(十二) vue02
    DAY65-前端入门-javascript(十一) vue01
    DAY64-前端入门-javascript(十)bootstrap
    第二篇 Flask的Response三剑客及两个小儿子
    第一篇 Flask初识
    vue+uwsgi+nginx部署luffty项目
    Nginx负载均衡
    集群概念
    Flask框架实现给视图函数增加装饰器操作示例
  • 原文地址:https://www.cnblogs.com/liq07lzucn/p/6236486.html
Copyright © 2011-2022 走看看