Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 1
Регистрация: 09.12.2013
Сообщений: 27

Вычислить количество перестановок элементов массива при использовании различных сортировок

02.10.2014, 10:02. Показов 4005. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заданы 3 массива из 200 эл. 1 упорядоченный.2масссив 200,199,198 и тд. 3 рандомный( как задать массив рандомный без повторений?). Надо вычислить кол-во перестановок и присваиваний сл методами
шейкер-сортировка.
Метод Шелла
Древовидная сортировка
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2014, 10:02
Ответы с готовыми решениями:

Cравнить число перестановок для различных сортировок
Напишите программу, которая сравнивает число перестановок элементов при использовании сортировки «пузырьком», методом выбора и алгоритма...

Вычислить количество различных перестановок цифр числа
посчитать количество различных перестановок цифр числа 17721212, при которых никакие 3 одинаковых цифр не идут друг за другом, общее...

Подсчитать общее количество перестановок после двух сортировок
Надо посчитать сколько всего перестановок было после двух сортировок..просто число перестановок тоесть их количество,например 5 или 6 ...

8
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
02.10.2014, 10:39
СергейПрог,
Запоминайте ранее сгеннерированые значения и Проверяйте то что вы генерируете
0
 Аватар для sysrepos
85 / 78 / 31
Регистрация: 08.08.2013
Сообщений: 464
Записей в блоге: 1
02.10.2014, 15:52
рандомный массив без повторений
C#
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
 
class MyClass { 
    static bool temp;
    
    public static int[] RanArr(int[] a) { 
            int r;  
            int size;   
            temp=false; 
            size=a.Length;  
            
            int[] arr = new int[size];              
            
            Random random = new Random();
            
            Console.WriteLine("size "+size);
            Console.WriteLine("");
                        
            for (int i=0; i<arr.Length; i++) {              
 
                
                do  //метод проверяет есть число в массиве, если есть, то сгенерировать новое число
                {
                    r=random.Next(0,size);
                }   while (proverka(arr,r)==true);              
                
                arr[i]=r;                   
            }                       
            return arr;
        }
        
            //если параметр уже есть в массиве, возвращает     true        
            static bool proverka (int[] arr, int p) {   
                if (p==0 & temp==false) {  //если 0 встретился первый раз, то вернуть тру, так как весь массив вначале заполнен нулями
                    temp=true;
                    return false;
                    }
                    
                for (int i=0; i<arr.Length; i++) {
                    
                    
                    if (arr[i]==p) {
                        return true;
                    }                   
                }
                return false;
            }
}
 
class MyMain {
    static void Main() {
        int[] arr = new int[50];
        
        arr=MyClass.RanArr(arr);
        
        Console.WriteLine("");
        for (int i=0; i<arr.Length; i++) {
            Console.Write(arr[i]+" ");
            }   
            
       Console.ReadLine();
        }
            
    }
Добавлено через 1 минуту
хотя наверняка есть вариант и покороче
0
Life Builder
 Аватар для sk007
531 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,755
02.10.2014, 18:09
Вот мой вариант массив без повторении
Кликните здесь для просмотра всего текста
using System.Linq;
C#
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
static Random r = new Random();
 
        static void ArrayZapoln(ref int[] arr)
        {
            HashSet<int> HS = new HashSet<int>();
 
            arr = arr.Select(x =>
            {
                Metka1:
 
                int i = r.Next(0, 50);
 
                if (!HS.Contains(i))
                {
                    HS.Add(i);
                    return i;
                }
                else goto Metka1;
 
            }).ToArray();
        }
 
        static void Main(string[] args)
        {
            int[] arr = new int[50];
 
            ArrayZapoln(ref arr);
            Console.WriteLine("");
 
            for (int i = 0; i < arr.Length; i++)
            {
                Console.Write("{0} ", arr[i]);
            }
 
            Console.ReadKey();
        }
0
 Аватар для 5665tm
171 / 120 / 14
Регистрация: 17.06.2013
Сообщений: 386
02.10.2014, 18:31
XRoy, представьте что нужно сформировать массив из миллиона чисел. И вот осталось сгенерировать последнее. Ждать пока не попадется одно из миллиона которое не совпадает с выпавшими ранее?)

Мой вариант:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private static int[] UniqueArray(int size)
        {
            var list = new List<int>();
            for (int i = 0; i < size; i++)
            {
                list.Add(i+1);
            }
            var array = new int[size];
            var rnd = new Random();
            for (int i = 0; i < size; i++)
            {
                int index = rnd.Next(0, list.Count);
                array[i] = list[index];
                list.RemoveRange(index, 1);
            }
            return array;
        }
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
02.10.2014, 19:00
5665tm,
C#
1
list.RemoveRange(index, 1);
ай-ай
C#
1
list.RemoveAt(index);
Добавлено через 1 минуту
C#
1
2
3
4
for (int i = 0; i < size; i++)
            {
                list.Add(i+1);
            }
лучше
C#
1
2
3
4
for (int i = 0; i < size;)
            {
                list.Add(++i);
            }
1
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
02.10.2014, 19:54
5665tm,
А в чем тут проблема? Можно же использовать множество.
Можете сами убедиться в скорости https://dotnetfiddle.net/0nYNj2
1
 Аватар для 5665tm
171 / 120 / 14
Регистрация: 17.06.2013
Сообщений: 386
02.10.2014, 20:17
XRoy, благодарю, не знал про существование HashSet. В шоке от скорости его работы, если поменять на List или использовать Contains для массива выходит в десятки раз медленнее
0
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
02.10.2014, 20:46
5665tm,
Извиняюсь, небольшая оплошность которая повлияла на скорость, перед последующим запуском таймером мы должны вызывать
C#
1
 sw.Restart();
https://dotnetfiddle.net/wVEXcF
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.10.2014, 20:46
Помогаю со студенческими работами здесь

Сравнить число перестановок элементов при использовании сортировки «пузырьком» и методом выбора
Напишите программу, которая сравнивает число перестановок элементов при использовании сортировки «пузырьком» и методом выбора. Проверьте ее...

Количество перестановок при сортировке массива
Как вывести число количества перестановок после сортировки массива, допустим выбору?

Подсчитать количество различных перестановок цифр данного числа 1249248, при которых никакие 2 одинаковых цифр не идут друг за другом
Подсчитать количество различных перестановок цифр данного числа 1249248, при которых никакие 2 одинаковых цифр не идут друг за другом.

Быстрая сортировка, подсчитать количество перестановок элементов массива
Здравствуйте! Никак не могу подсчитать количество перестановок елементов массива в сортировке Хоара:( Сделал счетчик value в цикле while,...

Подсчитать Количество перестановок при сортировке массива по возрастанию
Привет всем. Мне нужно написать программу, которая подсчитывает минимальное количество перестановок при сортировке массива по возрастанию....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru