整数的降序排列

时间:2019-10-08 20:39:36

标签: java permutation

我试图按降序返回整数的排列。目前,我有返回数字的所有排列的代码,但是它不是降序排列的。我不确定是否应该使用数组,这可能会更容易。我当前的代码是:

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:parentTag="LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/message_display"
    android:text="hello world"
    />
</merge>

1 个答案:

答案 0 :(得分:1)

您可以使用全局List<String> permutations,然后将所有值放入此集合中
最后,您可以使用
以降序对其进行排序 Collections.sort(permutations, Collections.reverseOrder());

private static List<String> permutations;

public static void main(String[] args) {
    permutations = new ArrayList<>();
    printPermutn("123", "");

    System.out.println();
    System.out.println("permutations BEFORE sorting");
    System.out.println(permutations);

    // sort
    Collections.sort(permutations, Collections.reverseOrder());

    System.out.println("permutations AFTER sorting");
    System.out.println(permutations);
}

// Function to print all the permutations of str
static void printPermutn(String str, String ans) {
    // If string is empty
    if (str.length() == 0) {
        System.out.print(ans + " ");
        permutations.add(ans);
        return;
    }

    for (int i = 0; i < str.length(); i++) {

        // 1st character of str
        char ch = str.charAt(i);

        // Rest of the string after excluding
        // the 1st character
        String ros = str.substring(0, i) + str.substring(i + 1);

        // Recurvise call

        printPermutn(ros, ans + ch);
    }
}