Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在java上执行插入排序,但无法正常工作_Java_Sorting_Linked List_Singly Linked List_Insertion Sort - Fatal编程技术网

尝试在java上执行插入排序,但无法正常工作

尝试在java上执行插入排序,但无法正常工作,java,sorting,linked-list,singly-linked-list,insertion-sort,Java,Sorting,Linked List,Singly Linked List,Insertion Sort,我试图在Java上进行插入排序 `公共类节点{ 私有对象数据; 专用节点链路 public Node(Object dataToAdd) { data = dataToAdd; link = null; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public Node getLink() { ret

我试图在Java上进行插入排序 `公共类节点{ 私有对象数据; 专用节点链路

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;
}
}

这是我的单链表类
公共类单链接列表{ 节点头

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 + "]";
}
public void插入(对象数据添加){
Node newnode=新节点(dataToAdd);
if(head==null){
头=新节点;
}否则{
节点温度=头;
对象[]数据=((字符串)dataToAdd.split(;);
对象[]比较=((字符串)temp.getData()).split(;);
System.out.println(数据[1]);
if(Integer.valueOf((字符串)数据[1])2){
返回true;
}
}
返回false;
}
公共对象获取(整数){
if(head==null){
System.out.println(“链接为空”);
返回null;
}否则{
节点温度=头;
while(temp!=null){
for(int i=0;i
} `

我需要一个新的插入方法来进行插入排序。 读取了一个文件,输入了一个类似于名称的文件;分数 我的目的是按分数对这些值进行排序。 一切似乎都很好。 然而,结果是这样的。 \n 欧洲经委会;5千卡;15佩林;30阿里;50耶利兹;25个Cem;40罐;35个兄弟姐妹;30雷姆齐;20纳赞;十,


我对insert方法做了一点修改,就是这样

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]);
}

我对insert方法做了一点修改,就是这样

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]);
}

非常感谢您的回答,这很好用。这段代码是从小数字到大数字的排序,但如何将其从大数字转换为小数字呢?一切正常。我非常感谢你的帮助。非常感谢你的回答,这个很好用。这段代码是从小数字到大数字的排序,但如何将其从大数字转换为小数字呢?一切正常。我非常感谢你的帮助。