Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
KillJoy
55 / 55 / 29
Регистрация: 21.09.2009
Сообщений: 313
Записей в блоге: 1
#1

Оптимизация сортировки методом двухпутевых вставок - C#

25.02.2012, 21:46. Просмотров 1829. Ответов 0
Метки нет (Все метки)

Помогите оптимизировать сортировку методом двухпутевых всавок. Уж слишком долго сортирут.
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
 
                    int[] array = {//массив}; //исхоный массив
                    int[] sorted  = new int[array.Length]; // отсортированный массив
                    for (int i = 1; i < array.Length; i++)
                        if (array[i] < array[0])
                            middlePosition++;
                    sorted[middlePosition] = array[0]; //опредлеляем положение первого элемента исходного массива в новом массиве
                    leftPointer = rightPointer = middlePosition; // leftPointer и rightPointer указыают на номера заполненных элементов слева и справа
 
                    for (int i = 1; i < array.Length; i++)
                    {
                        current = array[i];
                        k = 0;
                        if (current > sorted[leftPointer] && current < sorted[rightPointer])
                        {
                            while (sorted[k] < current)
                                k += 1;
 
                            if (k - 1 < middlePosition) //если он находится слева
                            {
                                {
                                    for (int t = leftPointer; t < k; t++)
                                        sorted[t - 1] = sorted[t];
                                }
                                leftPointer--;
                                sorted[k - 1] = current;
                            }
                            if (k > middlePosition) //если он находится справа
                            {
                                for (int t = rightPointer; t >= k - 1; t--)
                                {
                                    sorted[t + 1] = sorted[t];
                                }
                                rightPointer++;
                                sorted[k] = current;
                            }
                        }
                        else
                        {
                            if (current >= array[0])
                            {
                                rightPointer++;
                                sorted[rightPointer] = current;
                            }
                            if (current < array[0])
                            {
                                leftPointer--;
                                sorted[leftPointer] = current;
                            }
                        }

http://www.cyberforum.ru/csharp-beginners/thread1407716.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2012, 21:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Оптимизация сортировки методом двухпутевых вставок (C#):

Дописать программу методом сортировки вставок
Ребят помогите пожалуйста дописать программу методом сортировки вставок. {...

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

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

Исследование алгоритмов сортировки методом прямого включения и методом Шелла
Здравствуйте. Мне нужно написать программу в C# на тему &quot;Исследование...

Сортировка методом обмена и методом быстрой сортировки
Помогите пожалуйста написать программный код метода обмена и метода быстрой...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2012, 21:46
Привет! Вот еще темы с решениями:

Оптимизация методом Фибоначчи
Есть что-то похожее на pascal. program fibonacci; uses crt; const n_m=40; ...

Ускорение/оптимизация метода. Решение СЛАУ методом Гаусса
Здравствуйте. Имеется готовый рабочий алгоритм решения СЛАУ методом...

Непонятки с методом сортировки
Собственно проблема не большая, сделал сортировку предложений по количеству...

Массивы (методом сортировки простыми вставками)
Дан массив A размера N (≤ 6). Упорядочить его по возрастанию методом сортировки...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru