<span style="color:#FF0000;">/*二维数组排序(按第row列排序),sort为true从高到低排序反之从低到高排序*/</span>
public static String[][] arraySort( String array[][], int len,int row, boolean sort)
{
if( array!=null && len > 0 ) // 假如传入的输入不为 NULL 值
{
// int len = array.length; // 得到排序数组的长度(已直接给出给出)
int width = array[0].length; // 得到数组的列数
boolean exchange = true; // 交换记录
String temp[] = new String[width]; // 用于存放临时值
if( width < row ) {
System.out.println( "错误信息:排序列数大于数组列数" );
return null;
}
for( int i=0; i<len-1; i++)
{
exchange = false; // 交换标记为假
for( int j=len-2; j>=i; j--)
{
if( array[j][row] == null ) array[j][row] = "";
if( array[j+1][row] == null ) array[j+1][row] = "";
if( sort ) // 从高到底
{
//if( array[j][row].compareTo(array[j+1][row]) < 0 )
if( Integer.valueOf(array[j][row]) < Integer.valueOf(array[j+1][row]) )
{
for(int t=0; t<width; t++)
temp[t] = array[j][t]; // 存放临时数据
for(int t=0; t<width; t++)
array[j][t] = array[j+1][t]; // 数据交换
for(int t=0; t<width; t++)
array[j+1][t] = temp[t];
exchange = true; // 置交还标记为真
}
} else { // 从底到高
// if( array[j][row].compareTo(array[j+1][row]) > 0 )
if( Integer.valueOf(array[j][row]) > Integer.valueOf(array[j+1][row]) )
{
for(int t=0; t<width; t++)
temp[t] = array[j][t]; // 存放临时数据
for(int t=0; t<width; t++)
array[j][t] = array[j+1][t]; // 数据交换
for(int t=0; t<width; t++)
array[j+1][t] = temp[t];
exchange = true; // 置交还标记为真
}
}
}
if( exchange==false )
break;
}
return array;
}
return array;
}
<span style="color:#FF0000;"> /*按第row_1、row_2列从低到高排序*/</span>
public String[][] arraySort( String s[][], int row_1, int row_2 )
{
String array[][] = arraySort( s, row_1, false ); // 对第一个条件进行排序
if( array== null ) {
System.out.println( "错误信息:二维数组排序出错" );
return null;
}
int begin = 0;
int Col = 0;
for( int i=0; i<array.length-1; i=i+Col ) {
Col = 1; //第一行
for( int k=i+1; k<array.length; k++ ) {
if( array[i][row_1].equals(array[k][row_1]) ) {
Col ++;
} else {
break;
}
}
if( Col > 1 ) {
String swpData[][] = new String[Col][s[0].length];
for( int m=i; m<i+Col; m++ ) {
swpData[m-i] = array[m];
}
arraySort( swpData, row_2, false );// 对第二个条件进行排序
for( int m=i; m<i+Col; m++ )
array[m] = swpData[m-i];
}
}
return array;
}
Java 二维数组根据维度升序或降序排序
最新推荐文章于 2024-03-14 21:04:10 发布