Закрыть
×
=0) { let js = text.slice(pos1, pos2); + '<\/' + "script" + '>'; arrText.push(js); // next pos1 = pos2; continue; } } } break; } return arrText; } function OpenDialog(parentDiv, urlContent) { parentDiv = document.getElementById('modal-background'); // new !!!!!!! parentDiv.appendChild(document.getElementById('modal-template')); document.getElementById('modal-background').style.display = "flex"; // !!!!! block document.getElementById('modal-template').style.display = "flex"; // !!!!! document.getElementById('modal-body').innerHTML = ""; post_url(urlContent, "", function(text_from_server) { var element = document.getElementById('modal-body'); element.innerHTML = text_from_server; // add scripts var arrJSText = get_scripts(text_from_server); for (var i=0; i
dir.by
Праздники ...
Праздники ...
День города Минска (2-ая суббота сентября) (9 и 10 сентября 2023)
Концерты, выставки ...
Концерты, выставки ...
Концерт Александр Панайотов|||г. Минск 10 октября 2026
Афишу
Спорт занятия ...
Спорт занятия ...
Обучение плаванию (набор в группы)
Спорт занятие
Компьютер, программы...
Компьютер, программы...
Объявления ...
Объявления ...
Памятники из гранита, ритуальные услуги
Объявление
Новости ...
Новости ...
Форум ...
Форум ...
обсуждение...
Поиск
Концерты
Спорт
Форум
Компьютер
Компьютер, программы
→
Математические алгоритмы (пересечение прямоугольников, массивы, графы)
Сортировка массива (алгоритмы)
посмотрели
5914
раз
обновлено: 11 января 2019
Алгоритмы
1)
Алгоритм "Сортировка выбором"
2)
Алгоритм "Сортировка пузырьком"
3)
Алгоритм "Сортировка вставками"
4)
Алгортим "Быстрая сортировка"
Алгоритм "Сортировка выбором"
1.
Находим минимальный элемент в массиве.
2.
Меняем местами минимальный и первый элемент местами.
3.
Опять ищем минимальный элемент в неотсортированной части массива
4.
Меняем местами уже второй элемент массива и минимальный найденный, потому как первый элемент массива является отсортированной частью.
5.
Ищем минимальные значения и меняем местами элементы,пока массив не будет отсортирован до конца.
Алгоритм "Сортировка пузырьком"
1.
Каждый элемент массива сравнивается со следующим.
Если
элемент[k]
>
элемента[k+1]
то происходит замена.
Таким образом самые "легкие" элементы "всплывают" - перемещаются к началу списка.
Самые тяжелые элементы "тонут" - перемещаются к концу.
2.
Повторяем
n-1
раз, где n это количество элементов в массиве
Алгоритм "Сортировка вставками"
1. С самого начала берем 2-ой элемент и смотрим влевую часть массива куда вставить, (если 2-ой элемент меньше 1-го элемента то вставляем перед первым элементом).
2. Берем 3-ий элемент и смотрим влевую часть массива куда вставить перед первым или перед вторым.
3. Берем 4-ый элемент и смотрим влевую часть массива куда вставить
и т.д.
Анимация:
Пример "Сортировка вставками"
C#
Создаем новое C# консольное приложение...
и напишем код
using
System;
namespace
ConsoleApplication1
{
class
Program
{
static
public
void
InsertValue
(
int
posFrom,
int
insertTo,
int
[] vals)
{
// получаем значение
int
a = vals[posFrom];
// смещаем массив вправо
for
(
int
i = (posFrom - 1); i >= insertTo; i--)
{
vals[i+1] = vals[i];
}
// присваиваем (вставляем) значение в нужную позицию
vals[insertTo] = a;
}
// Сортировка вставками
static
public
void
Sort
(
int
[] vals)
{
// идем вправо
for
(
int
i = 1; i < vals.Length; i++)
{
// идем по левой части массива
for
(
int
insertTo = 0; insertTo < i; insertTo++)
{
// нашли место для вставки
if
(vals[i] < vals[insertTo])
{
// вставляем элемент
InsertValue(i, insertTo, vals);
break
;
}
}
}
}
static
void
Main
(
string
[] args)
{
// add values
int
[] values = { 10, 20, 5, 7, 13, 2 };
// сортировка вставками
Sort(values);
// выводим значения на экран
for
(
int
i = 0; i < values.Length; i++)
Console
.WriteLine(values[i]);
// на экране увидим
// 2
// 5
// 7
// 10
// 13
// 20
}
}
}
Алгортим "Быстрая сортировка"
Является одним из самых эффективных алгоритмов сортировки данных.
Вся суть алгоритма сводится к тому, чтобы разбить сложную задачу на маленькие и решить их по отдельности.
Выбирается некая опорная точка и все значения которые меньше перебрасываются влево, все остальные вправо.
Далее для каждой полученной части выполняетя тоже самое, до тех пор пока дробить части уже нельзя.
В конце мы получаем множество отсортированных частей, которые необходимо просто склеить в 1 целое.
Пример
C#
Создаем новое C# консольное приложение...
и напишем код
using
System;
namespace
ConsoleApplication1
{
class
Program
{
static
public
void
QuickSort
(
int
[] array,
int
left,
int
right)
{
int
l = left;
int
r = right;
// берем значение в центре массива
int
valueCenter = array[((l + r) / 2)];
do
{
while (array[l] < valueCenter)
++l;
while (array[r] > valueCenter)
--r;
if
(l <= r)
{
if
(l < r)
{
// меняем местами array[l] и array[r]
int
temp = array[l];
array[l] = array[r];
array[r] = temp;
}
++l;
--r;
}
}
while (l <= r);
// разбиваем на 2 промежутка
if
(left < r)
QuickSort(array, left, r);
if
(l < right)
QuickSort(array, l, right);
}
static
void
Main
(
string
[] args)
{
// add values
int
[] values = { 10, 20, 5, 7, 13, 2 };
// сортировка вставками
QuickSort(values, 0, values.Length-1);
// выводим значения на экран
for
(
int
i = 0; i < values.Length; i++)
Console
.WriteLine(values[i]);
// на экране увидим
// 2
// 5
// 7
// 10
// 13
// 20
}
}
}
На заметку!
Асимптотическая сложность алгоритма
— способ оценки вычислительной сложности алгоритма «с точностью до константы».
Обычно записывается как
О
.
O(n^2)
- такую сложность имеет алгоритм
сортировки пузырьком
.
Это называется
квадратичная сложность
O(n * log(n))
- такую сложность имеет алгоритм
быстрой сортировки
.
log(n)
это имеется в виду логарифм по основанию
2
← Предыдущая тема
Поиск в массиве
Следующая тема →
Графы
Ваши Отзывы ... комментарии ...
Вашe имя
Ваш комментарий
(www ссылки может добавлять только залогиненный пользователь)
+ картинку
Объявления
Объявления
•
Алгоритм пересечения прямоугольников
•
Поиск в массиве
•
Сортировка массива (алгоритмы)
•
Графы
Ваши вопросы присылайте по почте:
info@dir.by