本文概述
- C ++
- Java
- Python 3
- C#
例子:
Input: y[][] = {
{ 2, 5, 12 }, { 22, 54, 55 }, { 1, 6, 8 }
};
Output:
1 2 5
45 55 6
22 12 8Input: y[][] = {
{ 2, 5, 12 }, { 22, 45, 55 }, { 1, 6, 8 }, { 13, 56, 10 }
};
Output:
1 2 5
45 55 6
22 56 8
13 12 10
【将给定矩阵转换为排序的螺旋矩阵】方法:
- 将给定的2D数组转换为1D数组。
- 排序一维数组
- 将一维转换为螺旋矩阵
- 这可以通过4个用于存储所有元素的循环来解决。每个for循环都与矩阵一起定义单个方向的移动。第一个for循环代表从左到右的运动, 而第二个爬行代表从上到下的运动, 第三个代表从右到左的运动, 第四个代表从下到上的运动。
C ++
//C++ program to Convert given Matrix
//into sorted Spiral Matrix
#include <
bits/stdc++.h>
using namespace std;
const int MAX = 1000;
//Function to convert the array to Spiral
void ToSpiral( int m, int n, int Sorted[], int a[MAX][MAX])
{
//For Array pointer
int index = 0;
//k - starting row index
//m - ending row index
//l - starting column index
//n - ending column index
int k = 0, l = 0;
while (k <
m &
&
l <
n)
{//Print the first row
//from the remaining rows
for ( int i = l;
i <
n;
++i)
{
a[k][i] = Sorted[index];
index++;
}k++;
//Print the last column
//from the remaining columns
for ( int i = k;
i <
m;
++i)
{
a[i][n - 1] = Sorted[index];
index++;
}
n--;
//Print the last row
//from the remaining rows
if (k <
m)
{
for ( int i = n - 1;
i>
= l;
--i)
{
a[m - 1][i] = Sorted[index];
index++;
}
m--;
}//Print the first column
//from the remaining columns
if (l <
n)
{
for ( int i = m - 1;
i>
= k;
--i)
{
a[i][l] = Sorted[index];
index++;
}
l++;
}
}
}//Function to convert 2D array to 1D array
void convert2Dto1D( int y[MAX][MAX], int m, int n, int x[])
{int index = 0;
//Store value 2D Matrix To 1D array
for ( int i = 0;
i <
m;
i++)
{
for ( int j = 0;
j <
n;
j++)
{
x[index] = y[i][j];
index++;
}
}
}//Function to print the Matrix
void PrintMatrix( int a[MAX][MAX], int m, int n)
{//Print Spiral Matrix
for ( int i = 0;
i <
m;
i++)
{
for ( int j = 0;
j <
n;
j++)
{
cout <
<
a[i][j] <
<
" " ;
}
cout <
<
endl;
}
}//Function to Convert given Matrix
//into sorted Spiral Matrix
void convertMatrixToSortedSpiral(
int y[MAX][MAX], int m, int n)
{
int a[MAX][MAX] = {0};
int x[m * n];
convert2Dto1D(y, m, n, x);
sort(x, x + n * m);
ToSpiral(m, n, x, a);
PrintMatrix(a, m, n);
}//Driver code
int main()
{
int m = 4, n = 3;
int y[MAX][MAX] = {
{ 2, 5, 12 }, { 22, 45, 55 }, { 1, 6, 8 }, { 13, 56, 10 }};
convertMatrixToSortedSpiral(y, m, n);
return 0;
}//This code is contributed by Arnab Kundu
Java
//Java program to Convert given Matrix
//into sorted Spiral Matriximport java.util.*;
public class TwistedMatrix {static int MAX = 1000 ;
//Function to convert the array to Spiral
static void ToSpiral( int m, int n, int Sorted[], int a[][])
{
//For Array pointer
int index = 0 ;
//k - starting row index
//m - ending row index
//l - starting column index
//n - ending column index
int k = 0 , l = 0 ;
while (k <
m &
&
l <
n) {//Print the first row
//from the remaining rows
for ( int i = l;
i <
n;
++i) {
a[k][i] = Sorted[index];
index++;
}k++;
//Print the last column
//from the remaining columns
for ( int i = k;
i <
m;
++i) {
a[i][n - 1 ] = Sorted[index];
index++;
}
n--;
//Print the last row
//from the remaining rows
if (k <
m) {
for ( int i = n - 1 ;
i>
= l;
--i) {
a[m - 1 ][i] = Sorted[index];
index++;
}
m--;
}//Print the first column
//from the remaining columns
if (l <
n) {
for ( int i = m - 1 ;
i>
= k;
--i) {
a[i][l] = Sorted[index];
index++;
}
l++;
}
}
}//Function to convert 2D array to 1D array
public static int [] convert2Dto1D(
int y[][], int m, int n)
{int index = 0 ;
int x[] = new int [m * n];
//Store value 2D Matrix To 1D array
for ( int i = 0 ;
i <
m;
i++) {
for ( int j = 0 ;
j <
n;
j++) {
x[index] = y[i][j];
index++;
}
}
return x;
}//Function to print the Matrix
public static void PrintMatrix(
int a[][], int m, int n)
{//Print Spiral Matrix
for ( int i = 0 ;
i <
m;
i++) {
for ( int j = 0 ;
j <
n;
j++) {
System.out.print(a[i][j] + " " );
}
System.out.println();
}
}//Function to sort the array
public static int [] SortArray( int x[])
{//Sort array Using InBuilt Function
Arrays.sort(x);
return x;
}//Function to Convert given Matrix
//into sorted Spiral Matrix
public static void convertMatrixToSortedSpiral(
int y[][], int m, int n)
{int a[][] = new int [MAX][MAX];
int x[] = new int [m * n];
x = convert2Dto1D(y, m, n);
x = SortArray(x);
ToSpiral(m, n, x, a);
PrintMatrix(a, m, n);
}//Driver code
public static void main(String[] args)
{
int m = 4 , n = 3 ;
int y[][] = {
{ 2 , 5 , 12 }, { 22 , 45 , 55 }, { 1 , 6 , 8 }, { 13 , 56 , 10 }
};
convertMatrixToSortedSpiral(y, m, n);
}
}//This article is contributed by VRUND R PATEL
Python 3
# Python3 program to Convert given Matrix
# into sorted Spiral Matrix
MAX = 1000# Function to convert the array to Spiral
def ToSpiral(m, n, Sorted , a):# For Array pointer
index = 0# k - starting row index
# m - ending row index
# l - starting column index
# n - ending column index
k = 0
l = 0while (k <
m and l <
n):# Print the first row
# from the remaining rows
for i in range (l, n, 1 ):
a[k][i] = Sorted [index]
index + = 1k + = 1# Print the last column
# from the remaining columns
for i in range (k, m, 1 ):
a[i][n - 1 ] = Sorted [index]
index + = 1n - = 1# Print the last row
# from the remaining rows
if (k <
m):
i = n - 1
while (i>
= l):
a[m - 1 ][i] = Sorted [index]
index + = 1
i - = 1m - = 1# Print the first column
# from the remaining columns
if (l <
n):
i = m - 1
while (i>
= k):
a[i][l] = Sorted [index]
index + = 1
i - = 1l + = 1# Function to convert 2D array to 1D array
def convert2Dto1D(y, m, n):
index = 0
x = [ 0 for i in range (m * n)]# Store value 2D Matrix To 1D array
for i in range (m):
for j in range (n):
x[index] = y[i][j]
index + = 1return x# Function to print the Matrix
def PrintMatrix(a, m, n):# Print Spiral Matrix
for i in range (m):
for j in range (n):
print (a[i][j], end = " " )print ( '\n' , end = "")# Function to sort the array
def SortArray(x):# Sort array Using InBuilt Function
x.sort(reverse = False )return x# Function to Convert given Matrix
# into sorted Spiral Matrix
def convertMatrixToSortedSpiral(y, m, n):
a = [[ 0 for i in range ( MAX )]
for j in range ( MAX )]
x = [ 0 for i in range ( 15 )]x = convert2Dto1D(y, m, n)
x = SortArray(x)
ToSpiral(m, n, x, a)
PrintMatrix(a, m, n)# Driver code
if __name__ = = '__main__' :
m = 4
n = 3
y = [[ 2 , 5 , 12 ], [ 22 , 45 , 55 ], [ 1 , 6 , 8 ], [ 13 , 56 , 10 ]]convertMatrixToSortedSpiral(y, m, n)# This code is contributed by Surendra_Gangwar
C#
//C# program to Convert given Matrix
//into sorted Spiral Matrix
using System;
class GFG
{
static int MAX = 1000;
//Function to convert the array to Spiral
static void ToSpiral( int m, int n, int []Sorted, int [, ]a)
{
//For Array pointer
int index = 0;
//k - starting row index
//m - ending row index
//l - starting column index
//n - ending column index
int k = 0, l = 0;
while (k <
m &
&
l <
n)
{//Print the first row
//from the remaining rows
for ( int i = l;
i <
n;
++i)
{
a[k, i] = Sorted[index];
index++;
}k++;
//Print the last column
//from the remaining columns
for ( int i = k;
i <
m;
++i)
{
a[i, n - 1] = Sorted[index];
index++;
}
n--;
//Print the last row
//from the remaining rows
if (k <
m)
{
for ( int i = n - 1;
i>
= l;
--i)
{
a[m - 1, i] = Sorted[index];
index++;
}
m--;
}//Print the first column
//from the remaining columns
if (l <
n)
{
for ( int i = m - 1;
i>
= k;
--i)
{
a[i, l] = Sorted[index];
index++;
}
l++;
}
}
}//Function to convert 2D array to 1D array
public static int [] convert2Dto1D( int [, ]y, int m, int n)
{
int index = 0;
int []x = new int [m * n];
//Store value 2D Matrix To 1D array
for ( int i = 0;
i <
m;
i++)
{
for ( int j = 0;
j <
n;
j++)
{
x[index] = y[i, j];
index++;
}
}
return x;
}//Function to print the Matrix
public static void PrintMatrix( int [, ]a, int m, int n)
{//Print Spiral Matrix
for ( int i = 0;
i <
m;
i++)
{
for ( int j = 0;
j <
n;
j++)
{
Console.Write(a[i, j] + " " );
}
Console.WriteLine();
}
}//Function to sort the array
public static int [] SortArray( int []x)
{//Sort array Using InBuilt Function
Array.Sort(x);
return x;
}//Function to Convert given Matrix
//into sorted Spiral Matrix
public static void convertMatrixToSortedSpiral( int [, ]y, int m, int n)
{
int [, ]a = new int [MAX, MAX];
int []x = new int [m * n];
x = convert2Dto1D(y, m, n);
x = SortArray(x);
ToSpiral(m, n, x, a);
PrintMatrix(a, m, n);
}//Driver code
public static void Main(String[] args)
{
int m = 4, n = 3;
int [, ]y = {{ 2, 5, 12 }, { 22, 45, 55 }, { 1, 6, 8 }, { 13, 56, 10 }};
convertMatrixToSortedSpiral(y, m, n);
}
}//This code is contributed by Rajput-Ji
输出如下:
1 2 5
45 55 6
22 56 8
13 12 10
推荐阅读
- 如何使用PHP通过HTML表单在JSON文件中附加数据()
- 查找一个N x N网格,其每行和每列的xor相等
- 算法题(满足给定方程的最小正整数X)
- [转] 在安卓设备上使用 Chrome 远程调试功能
- Android Studio之高德地图实现定位和3D地图显示
- android应用开发-从设计到实现 2-3 颜色的运用
- Android实现按钮点击效果(第一次点击变色,第二次恢复)
- Android中通过反射获取资源Id
- Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)