package com.hasonger.util;
/**
* 二维数组处理:现将二维数组转换成一维数组,再做处理
* 二维数组排序,查找指定元素出现的次数
*/
import java.util.Arrays;
public class TwoDArraySort {
private static int[][] arr = { { 1, 2, 5, 7, 9 , 6, 5}, { 8, 6,7, 5, 4, 2 }, { 7, 6, 4, 2 } };
/*
* 一维数组转化为二维数组
*/
public static int[][] toTwoDArray(int[] a ) {
int index = 0;
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++){
arr[i][j] = a[index++];
}
}
return arr;
}
/*
* 在二维数组中查找指定元素出现的此数
*/
public static int search(int [][] a, int target) {
//先将二维数组转化为一维数组
int[] array = toOneDArray(a);
int count = 0;
for(int i : array) {
if(i == target) {
count++;
}
}
return count;
}
/*
* 二维数组转化为一维数组
*/
public static int[] toOneDArray(int[][] a) {
int index = 0;
int len = getTwoDArrayLength(a);
int[] array = new int[len];
for(int[] p : a) {
for(int i : p) {
array[index++] = i;
}
}
return array;
}
/*
* 获取二维数组的元素个数
*/
public static int getTwoDArrayLength(int[][] a) {
int len = 0;
for(int i=0; i<a.length; i++) {
len += a[i].length;
}
return len;
}
/*
* 按照二维数组的原始相对位置打印数组信息
*/
public static void show(int[][] p) {
for (int i = 0; i < p.length; i++) {
for (int j = 0; j < p[i].length; j++) {
System.out.print(p[i][j] + " ");
if (j == p[i].length - 1) {
System.out.println();
}
}
}
}
public static void main(String[] args) {
//将二维数组转化为一维数组
int[] temp = toOneDArray(arr);
//对一维数组排序
Arrays.sort(temp);
System.out.println("=============输出排序后的一维数组==============");
for(int i: temp) {
System.out.print(i + " ");
}
System.out.println();
System.out.println("==============输出排序后的二维数组==================");
int[][] p = toTwoDArray(temp);
show(p);
System.out.println("=========在二维数组中查找指定元素出现的次数===========");
System.out.println("元素7出现: " + search(arr, 7) + "次");
}
}
转载于:https://my.oschina.net/hasonger/blog/209090