⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serchmax.java

📁 数据挖掘的java实现 是我们上课的时候做的哦
💻 JAVA
字号:
软件学院 王玉馥(1291403166)03级4班

/*
 *查找MaxMotif的函数。
 */


package dataSmall ;
class ChainNodeType {
  String str = "";
  String attr = ""; //记录在那个串中
  ChainNodeType next = null; //指向下一个单词的指针
}

public class Serchmax {
  String s[];
  double b1,b2,step;
  char gen[] = new char[4];
  String findresult="";
  public Serchmax(String str[],double t1,double t2,double st) {
    s=str;
    b1=t1;
    b2=t2;
    step=st;
    gen[0] = 'A';
    gen[1] = 'C';
    gen[2] = 'G';
    gen[3] = 'T';
    find();
  }

  public void find() {
    ChainNodeType result[] = new ChainNodeType[s[0].length()];
    result[0] = new ChainNodeType();
    ChainNodeType p=result[0];
    for(int n=0;n<4;n++)
    {
      p.str=p.str+gen[n];
      p.next=new ChainNodeType();
      p=p.next;
    }
    double t;
    java.text.DecimalFormat df =new java.text.DecimalFormat("#0.00");
    for(t=b2;t>=b1;t-=step)
    { findresult+="MaxM(U,"+df.format(t)+")={";
      for (int i = 1; i < s[0].length(); i++) {
        result[i] = new ChainNodeType();
        ChainNodeType q = result[i];
        p = result[i - 1];
        while (p.next != null) {
          String key = "";
          for (int k = 0; k < 4; k++) {
            //拼字符串
            key = p.str + gen[k];
            if (fre(key) >= t) {

              fill(q, key);
              String key2;
              int flag = 1; //记录是否为max
              //右拼
              for (int j = 0; j < 4; j++) {
                key2 = key + gen[j];
                if (fre(key2) >= t) {
                  flag = 0;
                  break;
                }
              }
              //左拼
              if (flag == 1) {
                for (int j = 0; j < 4; j++) {
                  key2 = gen[j] + key;
                  if (fre(key2) >= t) {
                    flag = 0;
                    break;
                  }
                }
              }
              if (flag == 1) {
                findresult=findresult+q.str + q.attr + " ";
              }
              q.next = new ChainNodeType();
              q = q.next;
            }
          }
          p = p.next;
        }//while
      }//i
      findresult+="}\n\n";
    }//t

  //System.out.print(findresult);
  }

  //查找关键字的频度
  double fre(String key) {
    double fre = 0;
    for (int i = 0; i < s.length; i++) {
      if (s[i].indexOf(key) != -1) {
        fre++;
      }
    }
    return fre / s.length;
  }
  //将结果填入节点
  void fill(ChainNodeType ss, String key) {
    ss.str = key;
    if (fre(key) != 1) {
      ss.attr += "{";
      for (int i = 0; i < s.length; i++) {
        if (s[i].indexOf(key) != -1) {
          ss.attr = ss.attr + "u" + (i + 1) + ",";
        }
      }
      ss.attr = ss.attr.substring(0, ss.attr.length() - 1);
      ss.attr += "}";
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -