LRUアルゴリズムC++実装
1832 ワード
全体的な考え方:ループキューは同時にノードのカウントを使用してノードの新旧情報をマークし、新しいノードが追加された場合、最も古いノードを空にし、新しいノードを追加します.具体的に絵を描いたほうが分かりやすいです.
結果は次のとおりです.
この実装では配列内で要素を検索する必要がある場合があり,効率が悪いのはここで,時間的複雑度O(1)の挿入と削除が必要であればhashMap+双方向チェーンテーブルを用いることである.
#include
#include
#include
結果は次のとおりです.
1 2 3 4 5 6 5 4 3 1 7 9 1 2 3 5 6 9 4 2 1
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
6 2 3 4 5
6 1 3 4 5
7 1 3 4 5
7 1 3 4 9
7 1 3 2 9
5 1 3 2 9
5 1 3 2 6
5 9 3 2 6
5 9 3 4 6
5 9 2 4 6
1 9 2 4 6
この実装では配列内で要素を検索する必要がある場合があり,効率が悪いのはここで,時間的複雑度O(1)の挿入と削除が必要であればhashMap+双方向チェーンテーブルを用いることである.