数组随机重排与维度转换算法

发布于:2025-05-19 ⋅ 阅读:(20) ⋅ 点赞:(0)

完整代码结构

package edu.seig;

import java.util.Arrays;
import java.util.Random;

public class test {
    public static void main(String[] args) {
        // 完整实现代码
    }
}

初始化一维数组

// 定义一个包含0-15的一维数组
int[] tempArr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

随机打乱数组顺序

// 创建随机数生成器
Random r = new Random();

// 遍历数组进行随机打乱
for (int i = 0; i < tempArr.length; i++) {
    // 获取随机索引
    int randomIndex = r.nextInt(tempArr.length);
    // 交换当前位置和随机位置的数据
    int temp = tempArr[randomIndex];
    tempArr[randomIndex] = tempArr[i];
    tempArr[i] = temp;
}

创建二维数组

// 创建4×4的二维数组
int[][] data = new int[4][4];

核心方法一:使用除法和取模运算填充二维数组

// 遍历一维数组,使用除法和取模运算填充二维数组
for (int i = 0; i < tempArr.length; i++) {
    data[i / 4][i % 4] = tempArr[i];
}

核心方法二:使用双重循环填充二维数组

// 使用双重循环填充二维数组
int index = 0;
for (int i = 0; i < data.length; i++) {
    for (int j = 0; j < data[i].length; j++) {
        data[i][j] = tempArr[index];
        index++;
    }
}

遍历打印二维数组

// 遍历并打印二维数组
for (int i = 0; i < data.length; i++) {
    for (int j = 0; j < data[i].length; j++) {
        System.out.print(data[i][j] + " ");
    }
    System.out.println();
}

主要功能

  • 将0-15的数字随机打乱
  • 将打乱后的数据填充到4×4的二维数组中
  • 提供两种不同的填充方法
  • 打印最终的二维数组结果

关键点说明

  • 随机打乱算法:使用Fisher-Yates洗牌算法,通过随机交换实现数组元素的随机排列
  • 维度转换方法:方法一使用数学运算(除法和取模),方法二使用双重循环遍历
  • 数组遍历:使用嵌套循环遍历二维数组,按行优先顺序打印数据

使用场景

  • 数字华容道游戏初始化
  • 随机数矩阵生成
  • 数据加密中的位置打乱
  • 教学演示数组操作

注意事项

  • 确保一维数组长度是二维数组行列数的乘积
  • 随机打乱时注意索引范围
  • 打印时注意格式化输出,保持对齐

网站公告

今日签到

点亮在社区的每一天
去签到