将二维数组逆序并对每一行随机排列

时间:2022-07-01 14:47:36

要求:将一个二维数组进行逆序,逆序后所有的元素行列不定,进行随机排列
①先把数组每一行逆序(意思是第一行换到最后一行,以此类推)
②再把逆序后每一行进行随机排列
如:{{4,3,32,5},{1,2,3,4},{9,6,5,4}};
⇒4 6 5 9
  3 4 2 1
  5 4 32 3
 
代码:

package 华为机试题;
import java.util.Random;

/**
* @author Hutongling
*
* @time:2017年4月8日 下午10:31:22
*/

public class 将二维数组逆序并对每一行随机排列 {

static int[][] inverseAndRandomElement(int[][] data){
if( data==null ||data.length==0)
return null;
int[][] result=new int[data.length][data[0].length];

//反转行
for(int i=0;i<data.length;i++)
result[i]=data[data.length-i-1];

//对每一行中的元素随机排列
Random random=new Random();
for(int i=0;i<data.length;i++){
for(int j=0;j<data[0].length;j++){
int p=random.nextInt(data[0].length);
int temp;
temp=result[i][j];
result[i][j]=result[i][p];
result[i][p]=temp;
}
}

return result;
}
public static void main(String[] args) {
int data[][]={{4,3,32,5},{1,2,3,4},{9,6,5,4},{4,8,5,9}};
int result[][]=inverseAndRandomElement(data);
for(int i=0;i<result.length;i++){
for(int j=0;j<result[0].length;j++)
System.out.print(result[i][j] + " ");
System.out.println();
}
}

}

代码结果(不唯一):
4 8 9 5
4 9 5 6
3 4 2 1
4 5 32 3