[英]Trying to do insertion sort on java but doesnt work properly
我正在嘗試對 Java 進行插入排序。這是我的節點 Class`public class 節點 { private Object 數據; 私有節點鏈接;
public Node(Object dataToAdd) {
data = dataToAdd;
link = null;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Node getLink() {
return link;
}
public void setLink(Node link) {
this.link = link;
}
} And here is my Single Linked List Class
public class SingleLinkedList { Node head;
public void insert(Object dataToAdd) {
Node newnode = new Node(dataToAdd);
if (head == null) {
head = newnode;
} else {
Node temp = head;
Object[] data = ((String) dataToAdd).split(";");
Object[] compare = ((String) temp.getData()).split(";");
System.out.println(data[1]);
if (Integer.valueOf((String) data[1]) < Integer.valueOf((String) compare[1])) {
temp = head;
head = newnode;
newnode.setLink(temp);
} else {
temp = head;
while (temp.getLink() != null)
temp = temp.getLink();
newnode.setLink(temp.getLink());
temp.setLink(newnode);
}
}
}
public void display() {
if (head == null) {
System.out.print(" ");
} else {
Node temp = head;
while (temp != null) {
System.out.print(temp.getData() + " ");
temp = temp.getLink();
}
}
}
public boolean previousCheck(char answer) {
int count = 1;
if (head == null) {
System.out.print(" ");
} else {
Node temp = head;
while (temp != null) {
if (answer == (char) temp.getData()) {
count++;
}
temp = temp.getLink();
}
if (count > 2) {
return true;
}
}
return false;
}
public Object get(int number) {
if (head == null) {
System.out.println("Linked is empty ");
return null;
} else {
Node temp = head;
while (temp != null) {
for (int i = 0; i < number; i++) {
temp = temp.getLink();
}
return temp.getData();
}
}
return null;
}
@Override
public String toString() {
return "SingleLinkedList [head=" + head + "]";
}
}`
我需要一個新的插入方法來進行插入排序。 讀取了一個文件並輸入了 Name;Score 我的目的是按分數對這些值進行排序。 一切似乎都很好。 然而 output 就是這樣發生的。 \n Ece;5 Kaan;15 Pelin;30 Ali;50 Yeliz;25 Cem;40 Can;35 Sibel;30 Remzi;20 Nazan;10
我稍微修改了插入方法,就像那樣
public void insert(Object dataToAdd) {
Node newNode = new Node(dataToAdd);
if (head == null) {
head = newNode;
} else {
int score = getScore(dataToAdd);
int headObjectScore = getScore(head.getData());
if (score > headObjectScore) {
Node temp = head;
head = newNode;
newNode.setLink(temp);
} else {
Node currentNode = head;
//to handel if the newNode has the biggest score
if(currentNode.getLink()==null){
currentNode.setLink(newNode);
currentNode = newNode;
}
while (currentNode.getLink() != null){
Node oldNode = currentNode;
currentNode = currentNode.getLink();
if(score>getScore(currentNode.getData())){
oldNode.setLink(newNode);
newNode.setLink(currentNode);
break;
}
//to handel if the newNode has the biggest score
if(currentNode.getLink()==null){
currentNode.setLink(newNode);
currentNode = newNode;
}
}
}
}
}
private int getScore(Object data){
return Integer.valueOf(((String) data).split(";")[1]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.