私はJavaで簡単な検索エンジンに取り組んでいます。
検索エンジンは、最初に検索対象のファイル(txtファイル)を含むディレクトリの名前を入力として受け取り、各ファイル内に多くの単語を入力します。
次に、検索エンジンは、ディレクトリで検出されたすべての単語の転置インデックスを作成します。エンジンは各ファイルを読み取り、doubleLinkedListに各単語を挿入します。
問題は、100個の.txtファイルを含むディレクトリを扱う場合です。
インデックス作成時間:〜201msソート時間:2463ms
ディレクトリの並べ替えには1000個のファイルが含まれています
インデックス作成時間:2461msソート時間:922654ms
ディレクトリの並べ替えには10000個のファイルが含まれています
約10時間:(
実行時間を短縮する方法はありますか?
挿入ソートを使用したので、ソートアルゴリズムの提案はありますか?
DoubleLinkedListクラスの実装
public class DoubleLinkedList<T> {
private Node<T> head;
private Node<T> current;
public DoubleLinkedList(){
head = current = null;
}
public boolean empty(){
return head == null;
}
public boolean last(){
return current.next==null;
}
public boolean first(){
return current.previous == null;
}
public boolean full(){
return false;
}
public void findFirst(){
current = head;
}
public void findNext(){
current = current.next;
}
public void findPrevious(){
current = current.previous;
}
public T retrieve(){
return current.data;
}
public void update(T val){
current.data = val;
}
public void insert(T val){
if(head == null){
head = current = new Node<T>(val);
}else{
Node<T> tmp = new Node<T>(val);
tmp.next = current.next;
tmp.previous = current;
if(current.next != null)
current.next.previous = tmp;
current.next = tmp;
current = tmp;
}
}
public void remove(){
if(current == head){
head = head.next;
if(head!=null){
head.previous=null;
}
}else{
current.previous.next = current.next;
if(current.next!=null){
current.next.previous = current.previous;
}
}
if(current.next == null){
current = head;
}else{
current = current.next;
}
}
}