Как я могу отсортировать и найти дублирование в массиве и вернуть, если есть дублирование? - PullRequest
0 голосов
/ 08 марта 2020

как я могу отсортировать и найти дублирование в массиве и вернуть, если есть дублирование?

У меня есть массив с этим кодом

 Scanner input = new Scanner(System.in);
            System.out.print("Enter the size of the array: ");
            int r = input.nextInt();
            int[] list = new int[r];
            init(list);

  static void init(int list[]) {
        Random random = new Random();
        for (int i = 0; i < list.length; i++) {
            int n = (int) (Math.random() * 50 + 1);
            list[i] = random.nextInt(50) + 1;
        }
    }

    static void print(int list[]) {
        for (int i : list) {
            System.out.print(i + " ");
        }
    }
}

как я могу отсортировать его в другой метод и найдите дубликат

1 Ответ

0 голосов
/ 09 марта 2020

От вас вопрос, который я понимаю, Вы хотите дублировать элементы в массиве. Вот пример использования наивного подхода. Пожалуйста, не используйте его, если у вас очень большой массив !!!

public static void main (String [] args) {
    System.out.println("Hello world");
    int [] myarray = {1,3,4,2,2,2,3};
    int [] duplicates = findDuplicates(myarray);
    System.out.println(Arrays.toString(duplicates));
}

private static int [] findDuplicates( int [] list) {
    int [] countingArray = new int[1];
    int n = 0;

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

        for (int j = i + 1 ; j < list.length; j++) { 

            if (list[i] == list[j]) { 
                boolean flag = true;

                for (int k = 0; k < countingArray.length; k++) {
                    if ((countingArray[k] == list[i])) {
                        flag = false;

                    }

                }

                if (flag) { 
                    if (n == countingArray.length) countingArray = resizeBy1(countingArray);
                    countingArray[n++] = list[i];
                }

            }
        }
    }

    return countingArray;

}
private static int [] resizeBy1(int [] s) {
    int [] newArray = new int[s.length +1];

    for (int i = 0; i< s.length; i++) {
        newArray[i] = s[i];
    }
    s = newArray;
    return s; 
}

Если вы хотите узнать прогрессивный подход, пожалуйста, посмотрите на Поиск повторов в массиве

...