一道java笔试题

这是某公司的一道java笔试题,题目内容如下:
写一个java程序,实现对一个二维数组按指定的列集进行排序?要求实现类似sql中order by的功能,移动时,整行移动,不能打乱整行顺序。
可将二维数组想象成数据库里的一个表记录集,然后按指定的列集进行排序,即order by col1,col2。
//a为二维数组,sortCols是要按哪几列排序,如0,2,以逗号分隔,升序排。
public void sortIntArrs(int[][] a,String sortCols)
{
}

以下是我回答的程序:

public class MyArray
{
	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		int array[][] = new int[][]
		{
		{ 12, 34, 68, 32, 9, 12, 545 },
		{ 34, 72, 82, 57, 56, 0, 213 },
		{ 12, 34, 68, 32, 21, 945, 23 },
		{ 91, 10, 3, 2354, 73, 34, 18 },
		{ 12, 83, 189, 26, 27, 98, 33 },
		{ 47, 23, 889, 24, 899, 23, 657 },
		{ 12, 34, 68, 343, 878, 235, 768 },
		{ 12, 34, 98, 4, 56, 78, 12, 546 },
		{ 26, 78, 2365, 78, 34, 256, 873 } };// 要排序的数组
		int co[] = new int[]
		{ 0, 1, 2, 3, 4 };// 指定进行排序的列索引及排序顺序
		MyArray arraylist = new MyArray();
		arraylist.sortIntArrs(array, co);
	}

	public void sortIntArrs(int[][] a, int[] co)
	{
		for (int i = 0; i < a.length - 1; i++)
		{
			for (int j = i + 1; j < a.length; j++)
			{
				sort(a, co, i, j, 0);
			}
		}
		for (int m = 0; m < a.length; m++)
		{
			for (int n = 0; n < a[m].length; n++)
			{
				System.out.print(a[m][n] + ",");
			}
			System.out.println();
		}
	}

	public void sort(int[][] a, int[] co, int i, int j, int co_index)
	{
		if (co_index < co.length)
		{
			if (a[i][co[co_index]] > a[j][co[co_index]])
			{
				int aa[] = a[i];
				a[i] = a[j];
				a[j] = aa;
			} else if (a[i][co[co_index]] == a[j][co[co_index]])
			{
				sort(a, co, i, j, co_index + 1);
			}
		} else
			return;
	}
}



我的方法中没有将指定的列用字符串参数传递,我采用的是整型数组!
不过我的程序是不正确的,各位有正确的解决方法吗?请赐教!

你可能感兴趣的:(java,linux,windows,面试,J#)