Сортировка списка номеров - PullRequest
2 голосов
/ 03 июля 2019

Я пытаюсь отсортировать список чисел от самых маленьких до самых больших и распечатать его.Я пробовал две вещи:

1.

public class Sorter {
    public static void main(String[] args) {
        int[] numbers = {1, 3, 8, 2, 5, -2, 0, 7, 15};
        int[] sorted = new int[numbers.length];

        for (int a = 0; a < numbers.length; a++) {
            int check = 0;
            for (int b = 0; b < numbers.length; b++) {
                if (numbers[a] < numbers[b]) {
                    check++;
                }
            }
            sorted[check] = numbers[a];
        }

        for (int c = numbers.length - 1; c >= 0; c--) {
            System.out.print(sorted[c] + ", ");
        }
    }
}

, и эта вещь работает, но не будет работать с повторяющимися значениями, поэтому я попробовал эту другую вещь

public class Sortertwo {
    public static void main(String[] args) {
        int[] numinput = {3, 2, 1, 4, 7, 3, 17, 5, 2, 2, -2, -4};
        int[] numsorted = new int[numinput.length];

        int n = 0;
        for (; n < numinput.length; ) {

            for (int b = 0; b < numinput.length; b++) {
                int check = 0;
                for (int c = 0; c < numinput.length; c++) {
                    if (numinput[b] <= numinput[c]) {
                        check++;
                    }
                }

                if (check >= (numinput.length - n) && numinput[b] != 0) {
                    numsorted[n] = numinput[b];
                    numinput[b] = 0;
                    n++;
                }

                if (n >= (numinput.length)) {
                    break;
                }
            }
        }

        for (int g = 0; g < numinput.length; g++) {
            System.out.print(numsorted[g] + ", ");
        }
    }
}

Если он полагается на то, что после использования числа из первого массива (найден наименьший) его следует игнорировать, когда программа в следующий раз просматривает массив.Я пытался присвоить ему значение null, но оно не работает, поэтому я присвоил его нулю, а затем проигнорировал, что является проблемой, поскольку в списке не может быть нуля.Есть ли какой-нибудь лучший способ сделать это?Благодаря.

Ответы [ 3 ]

3 голосов
/ 03 июля 2019

Вы всегда можете использовать:

Arrays.sort(numbers);
0 голосов
/ 03 июля 2019

Если это не домашняя работа, использование Arrays.sort, как следует из комментариев, должно быть способом

import java.util.Arrays;

public class S {
    public static void main(String ... args) {
        int[] numbers = {1, 3, 8, 2, 5, -2, 0, 7, 15};
        Arrays.sort(numbers);
        System.out.println(Arrays.toString(numbers));
    }
}

Отпечатки:

[-2, 0, 1, 2, 3, 5, 7, 8, 15]
0 голосов
/ 03 июля 2019

Если вы хотите использовать свой первый метод, измените это:

if (numbers[a] < numbers[b])
{
    check++;
}

на:

if (numbers[a] <= numbers[b]) 
{
    check++;
}
...