to:ralihm
有用途啊,我要根据这个来挑选两个物种之间的保守区域(遗传特性),对了,我是搞生物信息的。

解决方案 »

  1.   

    你的email ?
    俺给你寄过去
      

  2.   

    public static void main(String[] args) {
        sortalgorim sortalgorim = new sortalgorim();
        Vector output = new Vector();
        int a[]= {2,1,3,5,6,2,3,4,5,8,3,4,2,2,1,1,5,6,5,6,7,8,9};//initiate array
        int index = 0;
        final int minlen = 4;//at least 4 element
    label:  while (index<a.length){
          int tmpidx = index+minlen-1;      Vector outputseg = new Vector();
          while (tmpidx<a.length){
            boolean reverse = false;
            for(int i=index+1;i<=tmpidx;i++){
              for (int j=index;j<i;j++){
                if (a[j]>a[i]){
                  if (!reverse) {
                    reverse = true;
                  }
                  else {
                      if (tmpidx-index>=4) {//if long enough,put it in output
                        for (int k=index;k<tmpidx;k++)
                          outputseg.addElement(new Integer(a[k]));
                        output.addElement(outputseg);
                        index = tmpidx;
                        continue label;
                      }else{
                      index++;
                      continue label;
                      }
                    }
              }
              }
            }
            tmpidx = tmpidx+1;
          }
          if (index<tmpidx-5){
            for (int k=index;k<tmpidx;k++)
              outputseg.addElement(new Integer(a[k]));
            output.addElement(outputseg);
          break;
          }
        }
       for (int i=0;i<output.size();i++)
        {
          Vector seg = (Vector)output.get(i);
        for (int j=0;j<seg.size();j++)
          System.out.println(seg.get(j));
         System.out.println("-------------");
        }
      }我没有把符合条件的都做成4个一组,只是把它全拉出来了,要做成4个一组也方便,只要控制一下index和tmpidx的跳动就可以了。