Java实现稀疏数组转化

x33g5p2x  于2021-12-12 转载在 Java  
字(1.4k)|赞(0)|评价(0)|浏览(561)

稀疏数组

普通数组压缩为稀疏数组

代码实现

  1. public class SparseArray {
  2. public static void main(String[] args) {
  3. int[][] array = new int[4][5];
  4. //初始化二维数组
  5. array[0][2] = 1;
  6. array[1][1] = 2;
  7. array[2][3] = 3;
  8. //记录普通数组中的有效值个数并且遍历普通数组
  9. int count = 0;
  10. for (int i = 0; i < array.length; i++) {
  11. for (int j = 0; j <array[i].length ; j++) {
  12. if (array[i][j] != 0) {
  13. //本例将不为0的数视为有效值
  14. count++;
  15. }
  16. System.out.print(array[i][j]+" ");
  17. }
  18. System.out.println();
  19. }
  20. //创建稀疏数组
  21. int[][] sparesArray = new int[count+1][3];
  22. sparesArray[0][0] = array.length;
  23. sparesArray[0][1] = array[0].length;
  24. sparesArray[0][2] = count;
  25. int index = 0;
  26. for (int i = 0; i < array.length; i++) {
  27. for (int j = 0; j < array[i].length; j++) {
  28. if (array[i][j] != 0){
  29. //将普通数组转化为稀疏数组
  30. index++;
  31. sparesArray[index][0] = i;
  32. sparesArray[index][1] = j;
  33. sparesArray[index][2] = array[i][j];
  34. }
  35. }
  36. }
  37. //遍历稀疏数组
  38. for (int i = 0; i < sparesArray.length; i++) {
  39. for (int j = 0; j < sparesArray[i].length; j++) {
  40. System.out.print(sparesArray[i][j]);
  41. System.out.print(" ");
  42. }
  43. System.out.println();
  44. }
  45. }
  46. }

输出结果

将稀疏数组还原为普通数组

代码实现

  1. //还原稀疏数组
  2. int[][] revertArray = new int[sparesArray[0][0]][sparesArray[0][1]];
  3. for (int i = 1; i < sparesArray.length; i++) {
  4. int row = sparesArray[i][0];
  5. int colunm = sparesArray[i][1];
  6. revertArray[row][colunm] = sparesArray[i][2];
  7. }
  8. System.out.println("还原后的普通数组");
  9. //遍历还原后的稀疏数组
  10. for (int i = 0; i < revertArray.length; i++) {
  11. for (int j = 0; j < revertArray[i].length; j++) {
  12. System.out.print(revertArray[i][j]);
  13. System.out.print(" ");
  14. }
  15. System.out.println();
  16. }

输出结果

相关文章

最新文章

更多