0
public class Structure <E extends Comparable<? super E>>{
  private E[] d;

  public Structure() { d = getArray(1); }

  public void show() { show(0); }

  private void show(int p){
    if( p < d.length && d[p] != null) {
      show(r(p));
      show(l(p));
      System.out.print(d[p] + " ");
    }
  }
  public void add(E obj) {
    int p = getPos(obj);
    if(p >= d.length)
      resize();
    d[p] = obj;
  }

  public boolean present(E obj){
    int p = getPos(obj);
    return p < d.length && d[p] != null;
  }

  private int getPos(E obj){
    int p = 0;
    while(p < d.length && d[p] != null){
      int dir = <*1>;
      if(dir < 0)
        p = l(p);
      else if(dir >0)
        p = r(p);
      else
        return p;
    }
    return p;
  }
  private E[] getArray(int size) {
    return (E[]) new Comparable[size];
  }

  private void resize(){
    E[] temp = getArray(d.length*2 + 1);
    for( int i = 0; i < d.length; i++)
      temp[i] = d[i];
    d = temp;
  }

  private int l(int i) { return 2 * i + 1;}
  private int r(int i) { return 2 * i + 2;}
}

そのデータ構造を取ります。それは何ですか?二分探索木だと思いますが、それか最大ヒープだと確信しています。ただし、私は主にBSTに傾いています。

public void fillCol (int n, Collection<Integer> col){
    for(int i = 0; i < n; i++)
    col.add (i);
}

col が連結リストの場合、そのメソッドの大きな O は何ですか? O(エヌ)だと思います。

colはツリーセットですか?O(N log N)だと思います。

public void sort (List<Double> data){
  int lim = data.size();
  for(int i = 0; i < lim; i++){
    int m = i;
    for(int j = i + 1; j < lim; j++)
      if(data.get(j) < data.get(m) )
        m = j;
    data.set( i, data.set(m, data.get(i)));
  }
}

リストの種類ごとに大きな o があります。ArrayListならO(N²)、Linked listならO(N³)だと思います。

グラフを表すクラスは、隣接行列を使用して頂点間の接続を表します。ノードあたり平均 M 接続の N ノードを含むグラフのスペース要件は?

O(N²)だと思います

助けてください!私が正しいかどうかを確認し、間違っている場合は訂正してください。

4

1 に答える 1

2

i の子が 2i と 2i+1 である配列で、バイナリ ヒープがよく行われる方法と同様の方法で実装された (必ずしもバランスが取れていない) バイナリ ツリーのように見えます。

誰かが、彼らがより良くしていたことを文書化するべきでした。

fillCol の評価に同意します。

その sort callable は無関係な質問のように思えます。はい、通常のデータ構造では O(n^2) に見えます。

于 2012-04-26T23:14:37.863 に答える