ソートされたベクトルに要素を挿入する最も効率的な方法は何ですか?

SoniEx2

ソート済みv: Vec<EventHandler<T>>、ソートしたまま要素を挿入したい。そうするための最も効率的な方法は何ですか?Rustにはそれを行うための組み込みの方法がないようです。

EventHandler<T> 以下のとおりであります:

struct EventHandler<T: Event + ?Sized> {
    priority: i32,
    f: fn(&mut T),
}

並べ替えの仕組みのため、挿入と並べ替えは非効率的であり、O(n log n)時間と2*n割り当てコストがかかります。

Lukas Kalbertodt

タスクは2つのステップで構成されています:で挿入位置を見つけるbinary_searchVec::insert()で挿入します。

match v.binary_search(&new_elem) {
    Ok(pos) => {} // element already in vector @ `pos` 
    Err(pos) => v.insert(pos, new_elem),
}

ベクトルに重複する要素を許可し、既存の要素を挿入する場合は、さらに短く書くことができます。

let pos = v.binary_search(&new_elem).unwrap_or_else(|e| e);
v.insert(pos, new_elem);

ただし、これには実行時の複雑さがO(n)であることに注意してください。中央に挿入するには、ベクトルは挿入位置の右にあるすべての要素を1つ右に移動する必要があります。

したがって、サイズが小さくないベクトルに複数の要素を挿入するために使用しないでください特に、この挿入ソートアルゴリズムはO(n²)で実行されるため、このメソッドを使用してベクトルをソートしないでください

このBinaryHeapような状況では、Aの方が適している可能性があります。各挿入(push)の実行時の複雑さは、O(n)ではなくO(log n)だけです。ソートにあなたも、それを変換することができますVecinto_sorted_vec()、あなたがそう望むならば、。ヒープを変換する代わりに、引き続き使用することもできます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

大きなベクトルから最初の要素を削除する最も効率的な方法は何ですか?

分類Dev

多数の要素にイベントリスナーを追加する最も効率的な方法は何ですか?

分類Dev

PySparkでソートされたリデュースを行う最も効率的な方法は何ですか?

分類Dev

長い(そして合理的に)スパースベクトルからランダム要素を選択する最も効率的な方法は何ですか?

分類Dev

複数のソートされた実行を含むファイルから行を取得する最も効率的な方法は何ですか

分類Dev

Rでソートされたベクトルのインデックスを取得する最も効率的な方法は?

分類Dev

ベクトルから最小値、最大値、中央値を抽出する最も効率的な方法は何ですか

分類Dev

ページ要素(xpath)がSelenium Webdriverに表示されるのを待つ最も効率的な方法は何ですか?

分類Dev

最初に繰り返されるデータのネストされた文字列配列を作成する最も効率的な方法は何ですか?

分類Dev

オブジェクトをネストされた日付キーとマージする最も効率的な方法は何ですか?

分類Dev

重複を消去してベクトルを並べ替える最も効率的な方法は何ですか?

分類Dev

最も効率的な方法で、2つのソートされていない配列をソートされた配列にマージする方法は?

分類Dev

要素の頻度に基づいて配列の要素をソートする最も効率的な方法は何ですか

分類Dev

ディレクトリにあるファイルの数を数えるための最もリソース効率の良い方法は何ですか?

分類Dev

範囲[0,127]の要素を含む行列をソートするための最も効率的なアルゴリズムは何ですか?

分類Dev

Javaでソートされていないバイナリツリーを構築する最も効率的な方法は何ですか?

分類Dev

Javaでソートされていないバイナリツリーを構築する最も効率的な方法は何ですか?

分類Dev

要素がベクトルに存在するかどうかを判断する最も効率的な方法

分類Dev

マウスに最も近い要素を決定するための最も効率的な方法は何ですか?

分類Dev

データベースの新しいエントリをチェックするための最も速くて効率的な方法は何ですか?

分類Dev

データフレームで選択された行のセットで計算を実行する最も効率的な方法は何ですか

分類Dev

Nodeが現在インストールされているかどうかを確認する最も効率的な方法は何ですか?

分類Dev

C ++でソートされたベクトルのインデックスを取得する効率的な方法

分類Dev

フラットテーブルをツリーに解析するための最も効率的でエレガントな方法は何ですか?

分類Dev

複数の関数をRの文字列のベクトルにマッピングする最も効率的な方法は何ですか?

分類Dev

Pythonで指定されたIDを持つ2次元リストの行(のコピー)を返す最も効率的な(最も速い)方法は何ですか?

分類Dev

ベクトルをいくつかに分割する最も効率的な方法

分類Dev

Azure Mysqlからデータをエクスポートする最も効率的な方法は何ですか?

分類Dev

1つのネストされたレベルでセル配列を解凍する最も効率的な方法

Related 関連記事

  1. 1

    大きなベクトルから最初の要素を削除する最も効率的な方法は何ですか?

  2. 2

    多数の要素にイベントリスナーを追加する最も効率的な方法は何ですか?

  3. 3

    PySparkでソートされたリデュースを行う最も効率的な方法は何ですか?

  4. 4

    長い(そして合理的に)スパースベクトルからランダム要素を選択する最も効率的な方法は何ですか?

  5. 5

    複数のソートされた実行を含むファイルから行を取得する最も効率的な方法は何ですか

  6. 6

    Rでソートされたベクトルのインデックスを取得する最も効率的な方法は?

  7. 7

    ベクトルから最小値、最大値、中央値を抽出する最も効率的な方法は何ですか

  8. 8

    ページ要素(xpath)がSelenium Webdriverに表示されるのを待つ最も効率的な方法は何ですか?

  9. 9

    最初に繰り返されるデータのネストされた文字列配列を作成する最も効率的な方法は何ですか?

  10. 10

    オブジェクトをネストされた日付キーとマージする最も効率的な方法は何ですか?

  11. 11

    重複を消去してベクトルを並べ替える最も効率的な方法は何ですか?

  12. 12

    最も効率的な方法で、2つのソートされていない配列をソートされた配列にマージする方法は?

  13. 13

    要素の頻度に基づいて配列の要素をソートする最も効率的な方法は何ですか

  14. 14

    ディレクトリにあるファイルの数を数えるための最もリソース効率の良い方法は何ですか?

  15. 15

    範囲[0,127]の要素を含む行列をソートするための最も効率的なアルゴリズムは何ですか?

  16. 16

    Javaでソートされていないバイナリツリーを構築する最も効率的な方法は何ですか?

  17. 17

    Javaでソートされていないバイナリツリーを構築する最も効率的な方法は何ですか?

  18. 18

    要素がベクトルに存在するかどうかを判断する最も効率的な方法

  19. 19

    マウスに最も近い要素を決定するための最も効率的な方法は何ですか?

  20. 20

    データベースの新しいエントリをチェックするための最も速くて効率的な方法は何ですか?

  21. 21

    データフレームで選択された行のセットで計算を実行する最も効率的な方法は何ですか

  22. 22

    Nodeが現在インストールされているかどうかを確認する最も効率的な方法は何ですか?

  23. 23

    C ++でソートされたベクトルのインデックスを取得する効率的な方法

  24. 24

    フラットテーブルをツリーに解析するための最も効率的でエレガントな方法は何ですか?

  25. 25

    複数の関数をRの文字列のベクトルにマッピングする最も効率的な方法は何ですか?

  26. 26

    Pythonで指定されたIDを持つ2次元リストの行(のコピー)を返す最も効率的な(最も速い)方法は何ですか?

  27. 27

    ベクトルをいくつかに分割する最も効率的な方法

  28. 28

    Azure Mysqlからデータをエクスポートする最も効率的な方法は何ですか?

  29. 29

    1つのネストされたレベルでセル配列を解凍する最も効率的な方法

ホットタグ

アーカイブ