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

Сортировка методом вставок с подсчетом времени

13.05.2010, 00:39. Показов 3015. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужна Сортировка методом вставок написанная для массива и листа с подсчетом времени. Никто не поможет?

Добавлено через 11 минут
Ну или если есть у кого мне просто файл прогнать и получить данные по времени, сама прога не нужна
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2010, 00:39
Ответы с готовыми решениями:

Сортировка буквенного массива методом вставок
namespace ConsoleApplication1 { class Program { static void Main(string args) { int...

Сортировка подсчетом
Помогите понять, что означают переменные min и max. пример в нете нашел. Сортировка подсчетом private static int countingSort(int arr,...

Дописать программу методом сортировки вставок
Ребят помогите пожалуйста дописать программу методом сортировки вставок. { int m = new int ; Random Gen = new Random(); for (int...

2
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
13.05.2010, 10:13
в гугле искали?
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
13.05.2010, 10:52
Лучший ответ Сообщение было отмечено finargot как решение

Решение

Вот, когда-то давно писал:

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
namespace Sort
{
    public class Counting //Сортировка подсчётом
    {
        public static int[] Comparison(int[] mass) //Подсчет сравнений
        {//Сложность: Θ(N ^ 2); Операций: (N ^ 2 + 3 * N) / 2 + C; Память: 8 * N + 8 байт
            int[] count = new int[mass.Length], result = new int[mass.Length];
            for (uint i = 0; i < mass.Length; i++) count[i] = 0;
            for (uint i = 0; i < mass.Length - 1; i++)
                for (uint j = i + 1; j < mass.Length; j++)
                    if (mass[i] > mass[j]) count[i]++; else count[j]++;
            for (uint i = 0; i < mass.Length; i++) result[count[i]] = mass[i];
            return result;
        }
        public static int[] Allocation(int[] mass) //Подсчет распределения
        {//Сложность: ?; Операций: ?; Память: (max - min) * 4 + 20 байт
            int min = mass[0], max = mass[0], c, i;
            for (int j = 1; j < mass.Length; j++)
            {
                if (min > mass[j]) min = mass[j];
                if (max < mass[j]) max = mass[j];
            }
            int[] count = new int[max - min + 1];
            for (i = 0; i < mass.Length; i++)
                count[mass[i] - min]++;
            i = 0;
            for (int j = min; j <= max; j++)
            {
                c = count[j - min];
                while (c > 0)
                {
                    mass[i] = j;
                    i++;
                    c--;
                }
            }
            return mass;
        }
        public static int[] Square(int[] mass) //?
        {//Сложность: ?; Операций: ?; Память: N + 8 байт
            int[] count = new int[mass.Length];
            for (int i = 0; i < mass.Length; i++)
            {
                int c = 0;
                for (int j = 0; j < mass.Length; j++)
                    if (mass[j] < mass[i]) c++;
                for (int j = 0; j < i; j++)
                    if (mass[j] == mass[i]) c++;
                count[c] = mass[i];
            }
            return count;
        }
    }
    public class Exchange //Сортировка обменом
    {
        public static int[] Bubble(int[] mass) //Метод пузырька
        {//Сложность: Θ(N ^ 2); Операций: 2 * N ^ 2 - N + C; Память: 5 байт
            bool flag = true;
            while (flag)
            {
                flag = false;
                for (uint i = 0; i < mass.Length - 1; i++)
                    if (mass[i] > mass[i + 1])
                    {
                        mass[i] ^= mass[i + 1];
                        mass[i + 1] ^= mass[i];
                        mass[i] ^= mass[i + 1];
                        flag = true;
                    }
            }
            return mass;
        }
    }
    public class Selection //Сортировка выбором
    {
        public static int[] Universal(int[] mass) //Универсальная выборка
        {//Сложность: Θ(N ^ 2); Операций: (N ^ 2 - N) * 1.5 + C; Память: 8 байт
            for (uint i = 0; i < mass.Length - 1; i++)
                for (uint j = i + 1; j < mass.Length; j++)
                    if (mass[i] > mass[j])
                    {
                        mass[i] ^= mass[j];
                        mass[j] ^= mass[i];
                        mass[i] ^= mass[j];
                    }
            return mass;
        }
    }
}
Надо будет как-нибудь доделать. Хотел сделать базу всех сортировок. Они уже как бы есть, но лень сейчас соединять.

Добавлено через 7 минут
Второй кусок проги:

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
using System;
 
class Program
{
    static int[] Input(int k)
    {
        int[] mass = new int[k];
        Console.WriteLine();
        for (int i = 0; i < k; i++)
        {
            Console.Write("\t" + i + " элемент = ");
            mass[i] = Convert.ToInt32(Console.ReadLine());
        }
        return mass;
    }
    static void Output(int[] mass)
    {
        Console.Clear();
        Console.WriteLine("Новый массив:\n");
        for (int i = 0; i < mass.Length; i++)
            Console.WriteLine("\t" + i + " элемент = " + mass[i]);
    }
    static void Main()
    {
        Console.Write("Длинна массива = ");
        int[] mass = Input(Convert.ToInt32(Console.ReadLine()));
        mass = Sort.Stability.Counting.Simple(mass);
        Output(mass);
    }
}
 
class Sort
{
    /* Подумать:
     * Сортировка Хоар
    */
    private static void Swap(ref int a, ref int b) //Обмен
    {
        a ^= b;
        b ^= a;
        a ^= b;
    }
    public class Stability
    {
        public class Counting
        {
            private static void Extreme(ref int min, ref int max, int[] mass)
            {
                for (int i = 1; i < mass.Length; i++)
                {
                    if (min > mass[i]) min = mass[i];
                    if (max < mass[i]) max = mass[i];
                }
            }
            public static int[] Simple(int[] mass) //Сложность O(n + k), память O(k)
            {
                int min = mass[0], max = mass[0], c, i;
                Extreme(ref min, ref max, mass);
                int[] auxiliary = new int[max - min + 1];
                for (i = 0; i < mass.Length; i++)
                    auxiliary[mass[i] - min]++;
                i = 0;
                for (int j = min; j <= max; j++)
                {
                    c = auxiliary[j - min];
                    while (c > 0)
                    {
                        mass[i] = j;
                        i++;
                        c--;
                    }
                }
                return mass;
            }
            public static int[] Square(int[] mass) //Сложность O(n ^ 2), память O(n)
            {
                int[] auxiliary = new int[mass.Length];
                for (int i = 0; i < mass.Length; i++)
                {
                    int c = 0;
                    for (int j = 0; j < mass.Length; j++)
                        if (mass[j] < mass[i]) c++;
                    for (int j = 0; j < i; j++)
                        if (mass[j] == mass[i]) c++;
                    auxiliary[c] = mass[i];
                }
                return auxiliary;
            }
        }
        public static int[] Gnome(int[] mass) //Сложность O(n ^ 2)
        {
            int i = 1, j = 2;
            while (i < mass.Length)
                if (mass[i - 1] <= mass[i])
                {
                    i = j;
                    j++;
                }
                else
                {
                    Swap(ref mass[i - 1], ref mass[i]);
                    i--;
                    if (i == 0)
                    {
                        i = j;
                        j++;
                    }
                }
            return mass;
        }
        public static int[] Insertion(int[] mass) //Сложность O(n ^ 2)
        {
            int j, key;
            for (int i = 0; i < mass.Length; i++)
            {
                key = mass[i];
                j = i - 1;
                while (j >= 0 && mass[j] > key)
                {
                    mass[j + 1] = mass[j];
                    j--;
                }
                mass[j + 1] = key;
            }
            return mass;
        }
        /* Добавить:
         * Сортировка перемешиванием - Cocktail sort
         * Блочная сортировка - Bucket sort
         * Сортировка слиянием - Merge sort
         * Сортировка с помощью двоичного дерева - Tree sort
        */
    }
    public class Instability
    {
        /* Добавить:
         * Сортировка Шелла - Shell sort
         * Пирамидальная сортировка - Heap sort
         * Быстрая сортировка - Quick sort
         * Блуждающая сортировка - Stooge sort
         * Поразрядная сортировка или Цифровая сортировка
         * 
         * Найти:
         * Сортировка расчёской - Comb sort
         * Плавная сортировка - Smooth sort
         * Intro sort
         * Patience sorting
        */
    }
    public class Other
    {
        /* Добавить:
         * Топологическая сортировка
        */
    }
}
Если с английским туго, то вставка - это Insertion.

Добавлено через 6 минут
А считать время можно например так:

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
class Program
{
    static int[] Input(int len)
    {
        int[] mass = new int[len];
        Random rnd = new Random();
        for (; len > 0; len--)
            mass[len - 1] = rnd.Next(-len / 2, len);
        return mass;
    }
    static void Output(int[] mass)
    {
        Console.Clear();
        Console.WriteLine("Массив:\n");
        for (int i = 0; i < mass.Length; i++)
            Console.WriteLine("\t" + i + " элемент = " + mass[i]);
    }
    static void Main()
    {
        const int n = 10000;
        const double k = 10000000;
        int[] rnd = Input(n), mass = new int[n];
        long time;
 
        rnd.CopyTo(mass, 0);
        time = DateTime.Now.Ticks;
        mass = Sort.Exchange.Bubble(mass);
        Console.WriteLine("Время = {0:0.00} секунд", (DateTime.Now.Ticks - time) / k);
 
        //Тест на упорядоченность по возрастанию
        for (int i = 1; i < mass.Length; i++)
            if (mass[i - 1] > mass[i]) Console.WriteLine("{0} error", i);
    }
}
Ну~, надеюсь это поможет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2010, 10:52
Помогаю со студенческими работами здесь

Сортировка подсчетом по убыванию
Помогите пожалуйста программу на c# написать.. using System; using System.Collections.Generic; using System.Linq; using...

Сортировка с подсчетом количества вхождений
Добрый день всем. Подскажите решение по такой задаче: есть файл с более чем несколькими миллионами строк. Заносим это все дело в список и...

Сортировка подсчетом - Выход за пределы массива
Всем ДВС! Подскажите пожалуйста где ошибка? Выход за пределы массива. Черт знает сколько сижу и не могу разобраться: int min = array,...

Быстрая сортировка с подсчетом операций сравнения
Помогите пжста разобраться с проблемой ... прога сортирует массив сортировками шелла и быстрой, подсчитывает кол-во операций! Для...

Реализовать сортировку массива целых чисел методом двухпутевых вставок
Вот такая задача: Реализовать сортировку массива целых чисел методом двухпутевых вставок при использовании следующих дополнительных...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта 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
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru