Im無法理解基數排序。我應該整理這個詞的最後一個字母,就像從右向左整理,直到沒有更多的字母被留下。在Java中使用相反順序的基數排序
文本文件看起來像這樣
酒吧 貓 蘋果 錯誤 COG 跳躍 鹿茸 腳踝 熊
我的輸出這樣
腳踝 鹿茸 蘋果 酒吧 熊 錯誤 跳躍 貓 COG
但我應該得到這樣
酒吧 錯誤 貓 COG 熊 腳踝 蘋果 雀躍輸出 鹿角
感覺就像我接近有正確的代碼,但我卡住了,不知道還有什麼要做。這將不勝感激,如果我能得到幫助,並指出我在正確的方向
這是我做的代碼
RadixSort.java
public class RadixSort {
public static void main(String[]args) throws FileNotFoundException{
Linkedlist[] allNameLinkedList = new Linkedlist[26]; // create an array
of LinkedList for 26 letters in alphabets
int count = 0;
// initialize all the elements in the array to new LinkedList
for (int i = 0; i < allNameLinkedList.length; i++) {
allNameLinkedList[i] = new Linkedlist();
}
Scanner scan = new Scanner(new File("words.txt"));
while(scan.hasNextLine())
{
String currentname = scan.nextLine();
for(int i = 0; i < 26; i++){
if(currentname.charAt(2) == (char)(i+97))
{
allNameLinkedList[i].addNodeToTheEndOfTheList(currentname);
}
}
count++;
}
// copy sorted nodes to new LinkedList called container
Linkedlist container = new Linkedlist();
for (int i = 0; i < 26; i++) {
Node n = allNameLinkedList[i].front;
while(n != null){
container.addNodeToTheEndOfTheList(n.name);
n = n.next;
}
}
// empty all the elements of array
for (int i = 0; i < allNameLinkedList.length; i++) {
allNameLinkedList[i] = new Linkedlist();
}
Node m = container.front;
while(m!=null)
{
String currentname = m.name;
for(int i = 0; i < 26; i++){
if(currentname.charAt(1) == (char)(i+97))
{
allNameLinkedList[i].addNodeToTheEndOfTheList(currentname);
}
}
m = m.next;
count++;
}
container = new Linkedlist();
for (int i = 0; i < 26; i++) {
m = allNameLinkedList[i].front;
while(m!=null){
container.addNodeToTheEndOfTheList(m.name);
m = m.next;
}
}
for (int i = 0; i < allNameLinkedList.length; i++) {
allNameLinkedList[i] = new Linkedlist();
}
m = container.front;
while(m!=null)
{
String currentname = m.name;
for(int i = 0; i < 26; i++){
if(currentname.charAt(0) == (char)(i+97))
{
allNameLinkedList[i].addNodeToTheEndOfTheList(currentname);
}
}
m = m.next;
count++;
}
container = new Linkedlist();
for (int i = 0; i < 26; i++) {
m = allNameLinkedList[i].front;
while(m!=null){
System.out.println(m.name);
container.addNodeToTheEndOfTheList(m.name);
m = m.next;
}
}
scan.close();
System.out.println("The total number of comparisions was :"+count);
}
}
爲了將來的參考,包括一個簡短的,獨立的,正確的例子,用最少量的文本顯示哪裏出錯是明智的。這將包括您的鏈接列表代碼。 欲瞭解更多關於什麼是可取的信息,你可以看看http://sscce.org/ – dddJewelsbbb
太多的代碼,我不明白你的問題,你排序的話,你真正需要什麼? 「你應該得到的輸出」與基數排序有什麼關係? – Shadov