Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
4 / 4 / 0
Регистрация: 26.06.2016
Сообщений: 115

Вывести на консоль числа в порядке убывания частоты встречаемости чисел

03.08.2016, 19:37. Показов 7622. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача просто ад для меня. Нашел словесное решение сделать 2 массива один с количеством сколько раз число встретилось в массиве второй просто массив не повторяющихся чисел.
Теперь задача разбилась на 2 части каким то образом отсортировать массив чтобы там больше не встречались повторяющиеся элементы и записать в другой массив числа , которые означают сколько раз число встречается в массиве.
Не могу написать как удалить повторяющиееся элементы в массиве. Нашел вот такой код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (int counter1 = 0; counter1 < number; counter1++)
            {
                for (int counter2 = counter1 + 1; counter2 < number ; counter2++)
                {
                    if ( mas[counter1] == mas[counter2] ) // если найден одинаковый элемент
                    {
                        for (int counter_shift = counter2; counter_shift < number -1; counter_shift++)
                        {
                            // выполнить сдвиг всех остальных элементов массива на -1, начиная со следующего элемента, после найденного дубля
                            mas[counter_shift] = mas[counter_shift + 1];
                        }
                        number -= 1; // уменьшить размер массива на 1
         
                        if (mas[counter1] == mas[counter2]) // если следующий элемент - дубль
                        {
                         counter2--; // выполнить переход на предыдущий элемент     
                        }
                    }
                }
            }
Не работает как надо. Подскажите пожалуйста как решить, уже неделю голову ломаю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.08.2016, 19:37
Ответы с готовыми решениями:

Вывести числа в порядке убывания частоты встречаемости чисел
Всем привет. Такое задание вывести числа в порядке убывания частоты встречаемости чисел. Я отсортировал массив по убыванию, теперь не знаю,...

Расположить в массиве числа в порядке убывания частоты встречаемости чисел
У меня задание: Расположить в массиве числа в порядке убывания частоты встречаемости чисел. Как это можно сделать? Я думаю, можно создать...

Отсортировать слова в порядке убывания частоты их встречаемости
Вообщем задача такова: Первый файл содержит текст, который под- лежит анализу(Анализ провел успешно) Второй файл необходимо создать, и...

7
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
03.08.2016, 19:56
Посмотрите в сторону HashMap. Ключ - это значение в массиве, значение - кол-во повторов
0
4 / 4 / 0
Регистрация: 26.06.2016
Сообщений: 115
03.08.2016, 21:25  [ТС]
neske, в книге где увидел задачу еще не проходили HashMap только прошли массивы и циклы
0
34 / 34 / 21
Регистрация: 01.11.2013
Сообщений: 319
03.08.2016, 22:18
АнатолийШ, Вот такой вариант проверь:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class Sorting {
    
    static TreeMap<Integer, Integer> meth(int []array ){
        TreeMap<Integer,Integer> result=new TreeMap<>();
        int temp=0;
        int count=0;
        for(int k=0;k<array.length;k++){
            count=0;
            temp=array[k];
            for(int i=0;i<array.length;i++){               
                if(temp==array[i])
                     count++;                         
            }            
            result.put(temp, count);
        }
        return result;
    }
    
    //для сортировки map по значениям
    static <K,V extends Comparable<? super V>> SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
        SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
            new Comparator<Map.Entry<K,V>>() {
                @Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
                    int res = e2.getValue().compareTo(e1.getValue());
                    return res != 0 ? res : 1;
                }
            }
        );
        sortedEntries.addAll(map.entrySet());
        return sortedEntries;
    }
    
    public static void main(String[] args){
        int array[]={4,3,5,4,6,7,4,2,1,1,1,1,1,3,4,1,1,4,3,6,8,7,7,6,4,7,8};
        System.out.println("Начальный масив");
        System.out.println(Arrays.toString(array));
        System.out.println("В порядке убвания частоты:");
        Set<Map.Entry<Integer,Integer>> res = entriesSortedByValues(meth(array));
        for(Map.Entry<Integer,Integer> set:res)
            System.out.print(set.getKey()+" ");
        
    }
}
1
0 / 0 / 0
Регистрация: 09.12.2015
Сообщений: 2
04.08.2016, 03:41
Здравствуйте, а не могли бы вы еще добавить метод, если не сложно, который бы указывал количество одинаковых цифр. Или подсказали как его реализовать.
0
4 / 4 / 0
Регистрация: 26.06.2016
Сообщений: 115
04.08.2016, 18:16  [ТС]
kozak95, спасибо за решение. Но суть в том чтобы реализовать это только через массивы, а не через Map и т.д. Так можешь помочь реализовать?
0
34 / 34 / 21
Регистрация: 01.11.2013
Сообщений: 319
06.08.2016, 20:52
dyominov, Ничего добавлять не надо, в Map вывести value просто.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class Sorting {
    
    static TreeMap<Integer, Integer> meth(int []array ){
        TreeMap<Integer,Integer> result=new TreeMap<>();
        int temp=0;
        int count=0;
        for(int k=0;k<array.length;k++){
            count=0;
            temp=array[k];
            for(int i=0;i<array.length;i++){               
                if(temp==array[i])
                     count++;                         
            }            
            result.put(temp, count);
        }
        return result;
    }
    
    //для сортировки map по значениям
    static <K,V extends Comparable<? super V>> SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
        SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
            new Comparator<Map.Entry<K,V>>() {
                @Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
                    int res = e2.getValue().compareTo(e1.getValue());
                    return res != 0 ? res : 1;
                }
            }
        );
        sortedEntries.addAll(map.entrySet());
        return sortedEntries;
    }
    
    public static void main(String[] args){
        int array[]={4,3,5,4,6,7,4,2,1,1,1,1,1,3,4,1,1,4,3,6,8,7,7,6,4,7,8};
        System.out.println("Начальный масив");
        System.out.println(Arrays.toString(array));
        System.out.println("В порядке убвания частоты:");
        Set<Map.Entry<Integer,Integer>> res = entriesSortedByValues(meth(array));
        for(Map.Entry<Integer,Integer> set:res)
            System.out.print(set.getKey()+"("+set.getValue()+")  ");
        
    }
}
Добавлено через 51 минуту
АнатолийШ, Через массивы это самокат будет) Вот допустим у Вас в одном массиве есть числа без повторов, а во втором соотвествующие им количество повторов. Как Вы отсортируете первый массив?
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
08.08.2016, 16:39
Цитата Сообщение от АнатолийШ Посмотреть сообщение
Задача просто ад для меня
Адскому заданию - адское решение!
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class HellExercise {
    public static void main(String[] args) {
        int[] numbers = { 3, 5, 2, 3, 4, 4, 1, 4, 5, 6, 4, 3, 4, 3, 2, 1, 2 };
        
        System.out.println("All numbers:");
        for ( int i : numbers )
            System.out.print(i + " ");
        System.out.println();
        
        int[] counters = new int [ numbers.length ];
        
        for ( int i = 0; i < numbers.length; ++i ) {
            counters[i] = 0;
        
            for ( int j = 0; j < numbers.length; ++j )
                if ( numbers[i] == numbers[j] )
                    counters[i] += 1;
        }
        
        for ( int i = 0; i < numbers.length - 1; ++i ) {
            for ( int j = i + 1; j < numbers.length; ++j ) {
                if ( counters[j] > counters[i] ) {
                    int tmp = counters[i];
                    counters[i] = counters[j];
                    counters[j] = tmp;
                    tmp = numbers[i];
                    numbers[i] = numbers[j];
                    numbers[j] = tmp;
                }
                else if ( counters[i] == counters[j] && numbers[i] > numbers[j] ) {
                    int tmp = numbers[i];
                    numbers[i] = numbers[j];
                    numbers[j] = tmp;
                }
            }
        }
        
        System.out.println("Number\tMeets");
        for ( int i = 0; i < numbers.length; i += counters[i] ) 
            System.out.println(numbers[i] + "\t" + counters[i]);
    }
}
Code
1
2
3
4
5
6
7
8
9
10
11
12
[andrew@andrew numbers]$ javac HellExercise.java 
[andrew@andrew numbers]$ java HellExercise
All numbers:
3 5 2 3 4 4 1 4 5 6 4 3 4 3 2 1 2 
Number  Meets
4       5
3       4
2       3
1       2
5       2
6       1
[andrew@andrew numbers]$
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.08.2016, 16:39
Помогаю со студенческими работами здесь

Числа входного потока в порядке увеличения частоты встречаемости вывести в файл
Написать программу, которая цифры встречающеюся во входной записи, в порядке увеличения частоты встречаемости выводит в выводной файл. ...

Расположить элементы массива в порядке убывания частоты встречаемости элементов.
В массиве записаны целые числа от 1 до 10. Расположить элементы массива в порядке убывания частоты встречаемости элементов. Помогите...

Вывести цифры в порядке увеличения частоты их встречаемости
На вход программе подается последовательность цифр, заканчивающаяся точкой (другие символы, кроме цифр и точки, отсутствуют). Требуется...

Упорядочить элементы массива в порядке частоты встречаемости чисел
Всем привет! Есть вопрос по задаче. как упорядочить элементы массива в порядке частоты встречаемости чисел. помогите плиз....

Вывести цифры, встречающиеся в последовательности, в порядке увеличения частоты встречаемости
На вход программе подается последовательность цифр, заканчивающаяся точкой ( другие символы, кроме цифр и точки, отсутствуют). Требуется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru