挿入ソートアルゴリズムを使用して配列をソートしようとしています。配列は、word
フィールド(テキストファイルから入力)およびfrequency
フィールド(特定の単語がテキストファイルに現れる回数を測定する)を含むWordNode
要素で満たされます。私は単語を頻度で並べ替えるように並べ替えを実装していますが、周波数が等しい場合はアルファベット順に並べ替える必要があります。どのようにして2つの異なる基準を同時に使用して並べ替えることができますか?以下は私のソートコードです。2つの異なる条件を使用して配列を並べ替える
public static void sort(ArrayUnorderedList<WordNode> array) {
//create stacks for insertion sort
LinkedStack<WordNode> sorted = new LinkedStack<WordNode>();
LinkedStack<WordNode> temp = new LinkedStack<WordNode>();
//while the array has elements to be sorted
while(!array.isEmpty()) {
//remove current element from array
WordNode currentNode = array.removeFirst();
//while the sorted stack meets sorting criteria
while((!sorted.isEmpty()) && (sorted.peek().getFrequency() < currentNode.getFrequency())) {
//push elements to temp stack
temp.push(sorted.pop());
}
//push current element to sorted stack
sorted.push(currentNode);
//while the temp stack has elements to be replaced
while(!temp.isEmpty()) {
//push elements to sorted stack
sorted.push(temp.pop());
}
}
//replace sorted elements in array
while(!sorted.isEmpty()) {
array.addToRear(sorted.pop());
}
}
ます。また 'Comparable'を実装する時に見ることができる、あなたは直接各ノードを比較し、' getWordは() 'String型の値を返します –