小算法

例如如下数据:
{2,3,5,7,12,10}
{2,3,6,4,12,9}
{3,8,5,11,12,4}

上面的三条记录放在ArrayList里面,并且每条数据本身也是一个ArrayLis,每条记录的长度是一样的,现在想找出其中最小的一条记录,即只要前面的数字小就认为它是小的。也就是说我要得到的数据是{2,3,5,7,12,10}

用java有好的算法吗?最好能易读一点的
[b]问题补充:[/b]
能帮着写一下吗?

//说实在话,我又想起旅行商问题来了~
import java.util.ArrayList;

/**
*

  • @author Administrator
    /
    public class NewClass {
    /

    {2,3,5,7,12,10}
    {2,3,6,4,12,9}
    {3,8,5,11,12,4}
    */

    ArrayList list1;
    ArrayList list2;
    ArrayList list3;
    ArrayList list;

    public static void main(String[] args) {
    new NewClass().printFirst();
    }

    //打印列表的第一个元素
    public void printFirst(){
    this.toOne();
    for (int i = 0; i < this.list1.size(); i++) {
    System.out.print(list.get(0).get(i) + " ");
    }
    }

    //算法在这里
    private ArrayList toOne() {
    this.initList(); //初始化各个List
    //前提条件还是你说的那些...
    int length = this.list1.size();
    int flag = 0;
    for(int i = 0 ; i < list.size() - 1; i++){
    for(int j = i + 1 ; j < list.size(); j++){
    if(i == j){
    continue;
    }
    if(Integer.parseInt(list.get(i).get(flag).toString().trim()) < Integer.parseInt(list.get(i).get(flag).toString().trim())){
    list.remove(j);
    }else if(Integer.parseInt(list.get(i).get(flag).toString().trim()) > Integer.parseInt(list.get(i).get(flag).toString().trim())){
    list.remove(i);
    }
    }
    flag ++ ;
    if(list.size() == 1){
    break;
    }
    }
    return list;
    }

    //初始化列表
    private void initList() {
    this.list1 = new ArrayList();
    this.list2 = new ArrayList();
    this.list3 = new ArrayList();
    //list1变成{2,3,5,7,12,10}
    list1.add(2);
    list1.add(3);
    list1.add(5);
    list1.add(7);
    list1.add(12);
    list1.add(10);
    //list2变成{2,3,6,4,12,9}
    list2.add(2);
    list2.add(3);
    list2.add(6);
    list2.add(4);
    list2.add(12);
    list2.add(9);
    //list3变成{3,8,5,11,12,4}
    list3.add(3);
    list3.add(8);
    list3.add(5);
    list3.add(11);
    list3.add(12);
    list3.add(4);
    //那个大的ArrayList是这样的
    this.list = new ArrayList();
    list.add(list1);
    list.add(list2);
    list.add(list3);
    }
    }

为什么不用二维数组呢?
只要控制好它的下标就可以实现你的算法了。至于代码应该不是很难写的。

Arrys.sort(list,Compareable);
class cc extend Compareable{
...............
}

直接数组+while就可以了,设置一个标记,比较出来了不是最小的,让while把它T出去,一次取数组的元素min()就可以了