我有一个简单的任务来转发方形2D数组:
(我需要以非常简单的方式进行,没有容器等)
(我需要以非常简单的方式进行,没有容器等)
static void Main(string[] args) { double[,] a = new double[5,5]; Random random = new Random(); for(int i = 0; i < 5; i++) { for(int j = 0; j < 5; j++) { a[i,j] = random.NextDouble(); } } for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { Console.Write(a[i,j] + " "); } Console.WriteLine(); } for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { double temp = a[i,j]; a[i,j] = a[j,i]; a[j,i] = temp; } } Console.WriteLine("\n\n\n"); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { Console.Write(a[i,j] + " "); } Console.WriteLine(); } Console.ReadKey(); } }
解决方法
发生这种情况是因为你正在执行从0到5的for循环.所以你要进行两次转置.
例如,对于i = 0和j = 1,您将[0,1]与[1,0]转置,当i = 1且j = 0时,a [1,0]和[0,1]的值]回到原来的位置.
你可以使内部从0到i,所以位置只交换一次.
for (int i = 0; i < 5; i++) { for (int j = 0; j < i; j++) { double temp = a[i,j]; a[i,i]; a[j,i] = temp; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。