Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Алгортим Быстрая сортировка.






Наиболее популярный и применяемый алгоритм на практике. Является одним из самых эффективных алгоритмов сортировки данных.
Вся суть алгоритма сводится к тому, чтобы разбить сложную задачу на маленькие и решить их по отдельности. Выбирается некая опорная точка и все значения которые меньше перебрасываются влево, все остальные вправо. Далее для каждой полученной части выполняетя тоже самое, до тех пор пока дробить части уже нельзя. В конце мы получаем множество отсортированных частей, которые необходимо просто склеить в 1 целое.

//Алгоритм " Быстрая сортировка" {

Процедура б_Сортировка(Массив, НижнийПредел, ВерхнийПредел)

 

 

i = НижнийПредел;

j = ВерхнийПредел;

m = Массив[Цел((i+j)/2)];

 

Пока Истина Цикл

Пока Массив[i] < m Цикл

i = i + 1;

КонецЦикла;

 

Пока Массив[j] > m Цикл

j = j - 1;

КонецЦикла;

 

Если i > j Тогда

Прервать;

КонецЕсли;

 

КонецЦикла;

 

Если НижнийПредел < j Тогда

б_Сортировка(Массив, НижнийПредел, j);

КонецЕсли;

 

Если i < ВерхнийПредел Тогда

б_Сортировка(Массив, i, ВерхнийПредел);

КонецЕсли;

 

КонецПроцедуры

 

Функция БыстраяСортировка(Массив)

 

НижняяГраница = 0;

ВерхняяГраница = Массив.ВГраница();

б_Сортировка(Массив, НижняяГраница, ВерхняяГраница);

 

Возврат Массив;

 

КонецФункции

//---}

Классическая сортировка массива в 1с.

Передаем массив в список значений. Сортируем стандартным методом " Сортировать".

//Сортировка списком значений {---

Функция СортировкаСпискомЗначений(Знач Массив)

 

мСписокЗнч = Новый СписокЗначений;

мСписокЗнч.ЗагрузитьЗначения(Массив);

мСписокЗнч.СортироватьПоЗначению(НаправлениеСортировки.Возр);

Возврат мСписокЗнч.ВыгрузитьЗначения();

КонецФункции

//---}

Все сортировки можно ускорить расположив код в циклах в 1 строку. Но для читабельности, оставил так.

Написал обработку в которой реализованы все вышеперечисленные алгоритмы, также поддерживается динамическая анимация процесса сортировки(Кроме стандартной сортировки 1с).

-При запуске обработки автоматически происходит формирование массива случайных чисел от 0 до 100 размерностью 100 элементов.
-Для создания другого массива необходимо нажать на кнопку " Создание ГСЧ массива ", также можно выбирать необходимый диапазон.
-Для включения динамической анимации необходимо поставить галочку на " Отобразить сортировку в диаграмме". Советую на неэффективных алгоритмах устанавливать галочку при размерности массива до 100 элементов, иначе состаритесь ждать сортировки:)






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.