私のプログラムは重複を探しています。フォルダーとサブフォルダー内の他のすべてのファイルとファイルを比較します。問題は、チェックが重複していることです。
たとえば、次の(大雑把な)フォルダ構造を考えてみてください
-Folder1
---File1
---File2
---File3
-フォルダ2
---ファイル1
--- ファイル2
-Folder3
---File1
---File2
---File3
---File4
したがって、明確にするために、フォルダー 1、フォルダー 2、およびフォルダー 3 はすべてルート レベルにあり、それぞれのフォルダー内に存在するファイルがあることを意味します。
私のプログラムは、2 つの foreach ループを介して相互に比較しながら反復します。
foreach (string path01 in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
{
foreach (string path02 in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
{
//perform logic with path01 and path02
}
}
ここでの問題は、反復の 1 つが Folder1\File1 を Folder2\File1 と比較することですが (これは望ましいことです)、Folder2\File1 と Folder1\File1 も比較します。そのチェックはすでに行われているため、これは非効率的です。上にリストしたファイル/フォルダーだけで誰が気にするかはわかりませんが、私のアプリケーションは何千ものフォルダーを比較していて、ファイルの数がわかりません。
私の頭の中では、アルファベット順に並べ替え、for ループを使用し、常に次の反復から開始して、検索が逆方向に進むのを防ぐ必要があると思いますが、よくわかりません。ある時点で、バブルソートが役立つかもしれないと思っていましたが、これはソートに関するものではありませんが、これを使用できるかどうかはわかりません。
この種の問題は文書化されており、存在していると確信しています。私が抱えている問題は、(私の投稿の長さからわかるように)パターンが存在するかどうかを調査できるように、Google 検索で説明する方法です。
それで、私の質問は、そのような問題のためのパターンまたはパラダイムがすでに存在するかということです.