Skip to content

Commit d60765a

Browse files
committed
Исправление замечаний кролика
1 parent 0fb582a commit d60765a

1 file changed

Lines changed: 24 additions & 39 deletions

File tree

src/Модули/Массивы.os

Lines changed: 24 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -502,30 +502,8 @@
502502
// Проверяем, нужно ли активировать режим галопа
503503
Если СчетчикПобедЛевый >= ПорогГалопа Тогда
504504

505-
// Галоп для левого массива - находим позицию в правом массиве
506-
Позиция = ЭкспоненциальныйПоискВправо(
507-
Массив,
508-
ИндексПравого,
509-
Конец2,
510-
ЛевыйМассив[ИндексЛевого],
511-
СравнениеЗначений
512-
);
513-
514-
// Копируем элементы из правого массива
515-
Пока ИндексПравого < Позиция Цикл
516-
Массив[ИндексРезультата] = Массив[ИндексПравого];
517-
ИндексПравого = ИндексПравого + 1;
518-
ИндексРезультата = ИндексРезультата + 1;
519-
КонецЦикла;
520-
521-
СчетчикПобедЛевый = 0;
522-
СчетчикПобедПравый = 0;
523-
524-
Продолжить;
525-
526-
ИначеЕсли СчетчикПобедПравый >= ПорогГалопа Тогда
527-
528-
// Галоп для правого массива - находим позицию в левом массиве
505+
// Левый массив побеждает - находим позицию в левом массиве
506+
// где элементы становятся >= текущему правому элементу
529507
Позиция = ЭкспоненциальныйПоискВлево(
530508
ЛевыйМассив,
531509
ИндексЛевого,
@@ -546,24 +524,31 @@
546524

547525
Продолжить;
548526

549-
КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off
550-
551-
// Обычное слияние
552-
Если СравнениеЗначений.Выполнить(ЛевыйМассив[ИндексЛевого], Массив[ИндексПравого]) <= 0 Тогда
527+
ИначеЕсли СчетчикПобедПравый >= ПорогГалопа Тогда
553528

554-
Массив[ИндексРезультата] = ЛевыйМассив[ИндексЛевого];
555-
ИндексЛевого = ИндексЛевого + 1;
556-
СчетчикПобедЛевый = СчетчикПобедЛевый + 1;
557-
СчетчикПобедПравый = 0;
529+
// Правый массив побеждает - находим позицию в правом массиве
530+
// где элементы становятся >= текущему левому элементу
531+
Позиция = ЭкспоненциальныйПоискВправо(
532+
Массив,
533+
ИндексПравого,
534+
Конец2,
535+
ЛевыйМассив[ИндексЛевого],
536+
СравнениеЗначений
537+
);
558538

559-
Иначе
539+
// Копируем элементы из правого массива
540+
Пока ИндексПравого < Позиция Цикл
541+
Массив[ИндексРезультата] = Массив[ИндексПравого];
542+
ИндексПравого = ИндексПравого + 1;
543+
ИндексРезультата = ИндексРезультата + 1;
544+
КонецЦикла;
560545

561-
Массив[ИндексРезультата] = Массив[ИндексПравого];
562-
ИндексПравого = ИндексПравого + 1;
563-
СчетчикПобедПравый = СчетчикПобедПравый + 1;
564546
СчетчикПобедЛевый = 0;
547+
СчетчикПобедПравый = 0;
565548

566-
КонецЕсли;
549+
Продолжить;
550+
551+
КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off
567552

568553
ИндексРезультата = ИндексРезультата + 1;
569554

@@ -610,11 +595,11 @@
610595

611596
Функция ЭкспоненциальныйПоискВлево(Массив, Знач Начало, Знач Конец, Знач Значение, СравнениеЗначений)
612597

613-
Если СравнениеЗначений.Выполнить(Массив[Начало], Значение) <= 0 Тогда
598+
Если СравнениеЗначений.Выполнить(Массив[Начало], Значение) > 0 Тогда
614599
Возврат Начало;
615600
КонецЕсли;
616601

617-
Если СравнениеЗначений.Выполнить(Массив[Конец], Значение) > 0 Тогда
602+
Если СравнениеЗначений.Выполнить(Массив[Конец], Значение) <= 0 Тогда
618603
Возврат Конец + 1;
619604
КонецЕсли;
620605

0 commit comments

Comments
 (0)