簡體   English   中英

插入排序排序ArrayList問題

[英]Insertion sort sorting an ArrayList problems

現在我已經有一段時間了,我遇到了一個錯誤。 現在我正在制作的程序是一本地址簿,我正在使用插入排序對對象的arraylist進行排序,我稱之為書籍(地址條目)。 現在我很快發現我的分揀機沒有正確排序,所以我制作了一個簡單的程序來測試分揀機,但它再次起作用。 我想知道你們是否可以看看它並幫助我。

這是我的分揀機:

import java.util.ArrayList;
public class Sorts {

    /**
     * Sorts and array of integer from low to high
     * pre: none
     * post: Integers has been sorted from low to high
     */
    public static void insertionSort(ArrayList<String> test) {
        Comparable temp;
        int previousIndex;
        ArrayList<String> objectSort = test;

        for (int i = 1; i < objectSort.size(); i++) {
            temp = objectSort.get(i);
            previousIndex = i - 1;

            while ((objectSort.get(previousIndex).compareTo((String) temp)) == 1 && (previousIndex > 0)) {
                objectSort.set(previousIndex + 1, objectSort.get(previousIndex));
                previousIndex -= 1; //decrease index to compare current item with next previous item
            }
            if (objectSort.get(previousIndex).compareTo((String) temp) == 1) {
                /* shift item in first element up into next element */
                objectSort.set(previousIndex + 1, objectSort.get(previousIndex));
                /* place current item at index 0 (first element */
                objectSort.set(previousIndex, (String) temp);
            } else {
                /* place current item at index ahead of previous item */
                objectSort.set(previousIndex + 1, (String) temp);
            }

        }
    }
}

我測試它的簡單程序是:

import java.util.ArrayList;

public class Main {
    public static void main(String[] args){
        ArrayList<String> test = new ArrayList<String>();

        test.add("Roxy");
        test.add("Proxy");
        test.add("Moxy");
        test.add("Samuel Adams");

        Sorts.insertionSort(test);

        System.out.println(test);

    }

}

總結一下,我的ArrayList分揀機遇到了麻煩。 問題是它不能正確排序,我不知道為什么。 非常感謝你提前。 如果你有任何問題隨時問。 :)

第一個問題:你期望compareTo總是為“大於”返回1。 它只返回一個大於0的值,它可能是一個不同的正整數。 所以你的== 1比較都應該> 0

可能還有其他問題,但這是我要看的第一個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM