一道面试题
fuyun
2011-08-12
给定一组数字,要求:
1、先进行升序排序; 2、给定n,对排序后的数字进行矩阵逆时针输出:其中,若数字项数大于n×n,则截取前n×n个,小于n×n则补零。 3、4×4格式的一个可能的输出例子: 1 12 11 10 2 13 16 9 3 14 15 8 4 5 6 7 |
|
xuedong
2011-08-16
感觉是排好序后,再定义个一二维数组,然后给二维数组赋值,最后把二维数组打印即可
|
|
zouershun
2011-08-17
定义个一二维数组,写个方法以四边形为单位处理数据,方法的2个参数(1,n),(2,n-1)...以此类推就可以了
|
|
zx246212
2012-05-24
public class test {
public static void main(String[] args) throws IOException { int n = 4; Integer[][] num = new Integer[n][n]; Integer[] demo = {1,2,3,16,5,6,7,8,9,10,11,12,13,14,15,4}; for(int i=0;i<demo.length;i++){ for(int j=i;j<demo.length;j++){ if(demo[i]>demo[j]){ int temp = demo[i]; demo[i] = demo[j]; demo[j] = temp; } } } int xmax = n-1; int ymax = n-1; int xmin = 0; int ymin = 0; int i = 0; while(i<n*n){ for(int a=xmin;a<=xmax;a++){ num[a][ymin] = demo[i]; i++; } for(int a=ymin+1;a<=ymax;a++){ num[xmax][a] = demo[i]; i++; } for(int a=xmax-1;a>=xmin;a--){ num[a][ymax] = demo[i]; i++; } for(int a=ymax-1;a>=ymin+1;a--){ num[xmin][a] = demo[i]; i++; } xmin+=1; xmax-=1; ymin+=1; ymax-=1; } for(int ii=0;ii<n;ii++){ System.out.println(); for(int j=0;j<n;j++){ System.out.print(num[ii][j]+" "); } } } } |