在合并排序中排序字符和数字的混合

时间:2017-09-28 14:32:31

标签: java

public class Mergesort {

    private int[] numbers;
    private int[] helper;
    private int number;

    public void sort(int[] values) {

        this.numbers = values;

        number = values.length;

        this.helper = new int[number];
        mergesort(0, number - 1);
    }

    private void mergesort(int low, int high) {

        // check if low is smaller than high, if not then the array is sorted
        if (low < high) {

            // Get the index of the element which is in the middle
            int middle = low + (high - low) / 2;

            // Sort the left side of the array
            mergesort(low, middle);

            // Sort the right side of the array
            mergesort(middle + 1, high);

            // Combine them both
            merge(low, middle, high);
        }
    }
}

我正在实现这个代码来对数字和字符数组进行排序,但这是我可以走多远,据我所知,这段代码最终会只有数字。如何对它进行排序以对多个字符和数字进行排序?

1 个答案:

答案 0 :(得分:0)

您可以使用 char 数据类型而不是 int

每个字母/数字在 char 中都有一个整数值。使用它将允许您根据它进行排序,这可能适合也可能不适合。

如果您想定义自己的订单,可以使用比较器界面:

https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html

虽然使用这种方法可能很复杂。