二维数组如下
Object b[][]={{"name1",5},{"name2",8},{"name3",10},{"name3",20},{"name4",2}};请问如何对有数字那一列排序之后,名字那一列中的名字找到自己正确的位置?譬如说第一个“5”是在位置b[0][1],"name1"b[0][0]排序后,“5”的位置在b[1][1],“name1”在b[1][0]上谢谢
Object b[][]={{"name1",5},{"name2",8},{"name3",10},{"name3",20},{"name4",2}};请问如何对有数字那一列排序之后,名字那一列中的名字找到自己正确的位置?譬如说第一个“5”是在位置b[0][1],"name1"b[0][0]排序后,“5”的位置在b[1][1],“name1”在b[1][0]上谢谢
for(int i=b.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(b[j][1]>b[j+1][1]){
Object[] tmp = b[j];
b[j] = b[j+1];
b[j+1] = tmp;
}
}
}
public static void main(String args[]) {
Object b[][]={{"name1",5},{"name2",8},{"name3",10},{"name3",20},{"name4",2}};
Object temp[];
for(int i=0;i<b.length;i++){
for(int j=i;j<b.length;j++){
if((Integer)b[j][1]<(Integer)b[i][1]){
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
}
System.out.println(Arrays.deepToString(b));
}
}
输出
===============
[[name4, 2], [name1, 5], [name2, 8], [name3, 10], [name3, 20]]
public static void changValues(Object a[] , Object b[]){
Object temp[];
temp=a[];
a[]=b[];
b[]=temp;
}
public static void main(String args[]) {
Object b[][]={{"name1",5},{"name2",8},{"name3",10},{"name3",20},{"name4",2}};
for(int i=0 ; i<b.length-1 ; i++){
int k = i;
for(int j=i+1 ; j<b.length ; j++){
if((Integer)b[j][1]<(Integer)b[k][1]){
k = j ;
}
}
changValues( b[i] , b[k]);
}
}
}
import java.util.*;
class temp
{
public static void main(String[] args){
Object tmp,tmp1;
Object[][] b={{"name1",5},{"name2",8},{"name3",10},{"name3",20},{"name4",2}};
for(int i=0;i<b.length-1;i++){
for(int j=i+1;j<b.length;j++){
if((Integer)b[i][1]>(Integer)b[j][1]){
tmp=b[i][1];tmp1=b[i][0];
b[i][1]=b[j][1];b[i][0]=b[j][0];
b[j][1]=tmp;b[j][0]=tmp1;
}
}
}
for(int i=0;i<b.length;i++)
System.out.println(b[i][0]+" "+b[i][1]);
}
}
哦~谢谢高人,现在再追加一条问题,就是我想写个方法,例如sort(Object b[][],Integer x,String name)
不知道我这样写对不对,其实就是想通过输入参数,跟已知的二维数组比较,最后把新的元素插进数组里面的正确位置,而且最后得出的数组是有序的。请问这样的方法如何实现啊?万分感谢~~
谢谢回复,但是为什么要把参数Integer x改为 int x呢?二维数组b[][]是放Object类型的哦。还有,我想光用楼上的排序不够,因为新的元素插进去之后,在原来数组中的其中一个元素必去要剔除,这是我暂时不能解决的问题。我本来想用到递归,但是发觉好像实现不了,请高人把代码写一下吧~谢谢
郁闷,自己回的帖子竟然不能编辑.......再想问一下,如何把name和x加入到数组里面啊?是要重新定义一个二维数组k[1][2]吗?
新创建一个TempData[][]数组,然后把新的元素和旧的数组一起加入进去,然后执行sort()方法,排序,把排好序的TempDatap[][]数组的前5位输入回data数组,代码如下class temp
{
public static void sort(Object TempData[][])
{
//Object tmp,tmp1;
Object temp[];
for(int i=0;i<TempData.length;i++){
for(int j=i;j<TempData.length;j++){
if((Integer)TempData[j][1]<(Integer)TempData[i][1]){
temp=TempData[i];
TempData[i]=TempData[j];
TempData[j]=temp;
}
}
}
}
public static void copy(Object data[][],int x,String name)
{
Object TempData[][]=new Object[6][6];
for(int i=0;i<data.length;i++)
{
TempData[i][0]=data[i][0];
TempData[i][1]=data[i][1];
}
TempData[5][1]=x;
TempData[5][0]=name;
sort(TempData);
for(int i=0;i<data.length;i++)
{
data[i][0]=TempData[i][0];
data[i][1]=TempData[i][1];
}
}
public static void main(String[] args){
Object[][] b={{"name1",5},{"name2",8},{"name3",10},{"name3",20},{"name4",2}};
copy(b,3,"james");
for(int i=0;i<b.length;i++){
System.out.println(b[i][0]+" "+b[i][1]);
}
}
}
{
for(Object j:b)
{
System.out.println(j);
}
}