首页 > 编程语言 >【C#】数组转置

【C#】数组转置

时间:2024-08-27 14:57:10浏览次数:10  
标签:src 转置 double dst xx yy C# int 数组

【需求】

现有一个需求,3行4列的从左到右从上到下的数组,转成4行3列,如图所示:

 【实现方法】

通过C#编码实现,两种方法:

第一种方法:

 public double[] transpose(double[] src, int w, int h)
 {
     double[] dst = null;
     if (src == null || src.Length != w * h || w == 0 || h == 0)
     {
         return dst;
     }
     dst = new double[w * h];
     for (int yy = 0; yy < h; yy++)
     {
         for (int xx = 0; xx < w; xx++)
         {
             dst[xx * h + yy] = src[yy * w + xx];
         }
     }
     return dst;
 }

 

第二种方法,通过指针实现:

public double[] transpose2(double[] src, int w, int h)
{
    double[] dst = null;
    if (src == null || src.Length != w * h || w == 0 || h == 0)
    {
        return dst;
    }
    dst = new double[w * h];
    unsafe
    {
        fixed (double* srcInptr = src)
        {
            double* psrc = srcInptr;
            fixed (double* dstInptr = dst)
            {
                for (int yy = 0; yy < h; yy++)
                {
                    double* pdst = dstInptr + yy;
                    for (int xx = 0; xx < w; xx++, ++psrc, pdst += h)
                    {
                        *pdst = *psrc;
                    }
                }
            }
        }
    }
    return dst;
}

 

【实现效果】

输入数组{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},输出转置后的数组{1,5,9,2,6,10,3,7,11,4,8,12}

 

 

标签:src,转置,double,dst,xx,yy,C#,int,数组
From: https://www.cnblogs.com/moon-stars/p/18382664

相关文章

  • 【编程规范具体案例(基于Qt、微软、谷歌和AUTOSAR C++14 参考)】 C++ 编码规范 之并发篇
    目录标题并发目录12.并发编程规范12.1线程创建与管理规则12.1.1\[必须]明确定义线程的生命周期管理策略12.1.2\[必须]为关键线程设置明确的标识符12.1.3\[必须]在多线程环境中安全地处理异常12.2线程同步规则12.2.1\[必须]使用线程安......
  • [开题]flask框架信息安全知识学习微信小程序10fhc(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在数字化时代,信息安全已成为社会经济发展的重要基石。随着移动互联网的普及,微信小程序作为一种轻量级的应用形态,迅速渗透到人们的日常生活......
  • confluence
     我是有postgres的文件了 所以我需要重新创建个容器  dockerrun-itd-p8090:8090\--nameconfluence\-eJVM_MINIMUM_MEMORY=4096m\-eJVM_MAXIMUM_MEMORY=4096m\-v/data/confluence:/opt/atlassian/confluence-data\confluence:8.7.1   一、部署conf......
  • AtCoder Beginner Contest 052
    A-TwoRectangles#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ ios::sync_with_stdio(false),cin.tie(nullptr); intA,B,C,D; cin>>A>>B>>C>>D; cout<<max(A*B,C*D); ......
  • React 高德地图 进京证 (二)
    上回书说到,躲开摄像头的基本功能实现了,但有三个核心问题:(1)速度慢(2)距离远易失败(3)地图限制第一个问题:较为简单,把几千个摄像头按行政区划分好带上编号,在路线分段避让时按片儿计算,综合测试速度提升了50%。//找到每段step途径的letwayDistrictsCamera=[];step.cities.map(city......
  • 在flutter中用flutter_datetime_picker只选择年月,或只选择年,以及选择日期
    flutter_datetime_picker组件没有配置只选择年或者月的,只能选择日期或者时间,现重新修改组件支持此功能效果如下:只选择年月只选择年 日期就不用展示了,组件自己就有导入包flutter_datetime_picker:1.5.1 修改组件的文件 修改后的flutter_datetime_picker.dart代码li......
  • T240827【定理3.3 Cauchy积分定理的 Goursat 证明】
    [T240819]Cauchy积分定理:设\(f(z)\)在\(z\)平面上的单连通区域\(D\)内解析,\(C\)为\(D\)内的任一条周线,则\[\int_Cf(z)~\mathrmdz=0\]证:【Goursat证明】Step1:若\(C\)为\(D\)内任一三角形\(\Delta\).假设\(|\int_{\Delta}f(z)~\mathrmdz|=M\),下证......
  • Mockito教程(单测mock)
    1Mockito介绍[3]1.1Mockito是什么?Mockito是mocking框架,它让你用简洁的API做测试。而且Mockito简单易学,它可读性强和验证语法简洁。1.2为什么需要Mock测试驱动的开发(TDD)要求我们先写单元测试,再写实现代码。在写单元测试的过程中,我们往往会遇到要测试的类有很多依赖,这些......
  • Ansible `replace` 模块
    Ansiblereplace模块一、简介功能:replace模块用于在远程主机上的文件中替换匹配的文本。它通过正则表达式查找文件中的特定模式,并将其替换为指定的内容。这对于修改配置文件、脚本或其他需要批量文本替换的场景非常有用。使用场景:适用于需要精确匹配和替换文件内容的情......
  • Dirsearch-master安装使用及常见问题解决(互联网和内网)
    1、文档概述        本手册适用于帮助初学者快速掌握Dirsearch-master的安装、配置与使用方法。通过阅读本文档,您将能够了解如何搭建Dirsearch-master环境、扫描目标服务器上潜在的敏感文件和目录,并解读生成的报告。此外,本文档还涵盖了常见问题及解决方法,以便您在实际......