lol lol
что в вашем понимании считается "эффективным" методом?
для кого-то быстрота сортировки и является признаком эффективности.
а для кого-то другого под эффективностью понимается размер памяти требуемой под сортировку.
а кому-то вообще главное чтобы было сделано как можно меньше операций (и пусть оно хоть день занимает)
при все прочих равных условиях, метод "сортировки слиянием" ( у буржуев называется merge sort ) будет быстрее.
как правило, на массивах существенной длины обгоняет другой метод - "быстрый поиск" ( у буржуев зовётся QuickSort ), хотя по сложности методы имеют одинаковый порядок. Однако QuickSort может конкретно притормозить если неумело им пользоваться. В то же время QuickSort требует гараздо меньше памяти для работы, чем "сортировка слиянием"
Другие языки программирования и технологии
сортировка массива. какой метод сортировки массива самый быстрый и эффективный?
Если массив достаточно большой и заранее известно, что он несортированный, то QuickSort, пожалуй.
//--------------------------------------------------------------------------------------------
template <class>
void qs(s_type *item, int left, int right)
{
/*
******Параметризированная функция быстрой сортировки массива
*/
****register int****i, j;****//для ускорения работы индексные переменные помещаем в регистры
****s_type *****x, y;****//для сортировки
//индексные переменные ставим на указанные границы массива
****i = left;****
****j = right;
//выбираем "компаранд"
****x = item[ (left+ right) / 2];
//все элементы большие компаранда переносим в левую часть массива
//все элементы меньшие компаранда переносим в правую часть массива
****do
****{
*while(item < x && i < right) i++;
*while(x < item[j] && j > left) j--;
*if(i <= j)
*{
*****y = item;
*****item = item [j];
*****item[j] = y;
*****i++;
*****j--;
*}
****}while(i <= j);
//повторяем процедуру для отсортированных частей массива пока все не отсортируем
****if(left < j) qs(item, left, j);
****if(i < right) qs(item, i, right);
}
template <class>
void qs(s_type *item, int left, int right)
{
/*
******Параметризированная функция быстрой сортировки массива
*/
****register int****i, j;****//для ускорения работы индексные переменные помещаем в регистры
****s_type *****x, y;****//для сортировки
//индексные переменные ставим на указанные границы массива
****i = left;****
****j = right;
//выбираем "компаранд"
****x = item[ (left+ right) / 2];
//все элементы большие компаранда переносим в левую часть массива
//все элементы меньшие компаранда переносим в правую часть массива
****do
****{
*while(item < x && i < right) i++;
*while(x < item[j] && j > left) j--;
*if(i <= j)
*{
*****y = item;
*****item = item [j];
*****item[j] = y;
*****i++;
*****j--;
*}
****}while(i <= j);
//повторяем процедуру для отсортированных частей массива пока все не отсортируем
****if(left < j) qs(item, left, j);
****if(i < right) qs(item, i, right);
}
Для каждого случая свой.
Зависит от расположения данных в массиве, размера массива и так далее.
Похожие вопросы
- Самый быстрый и эффективный способ изучить учебник по программированию ?
- c#. Сортировка массива в отдельном методе. Консольное приложение.
- Изучил несколько простых алгоритмов сортировки, осталось изучить быструю и слияние, нужно ли вообще писать эти алгоритмы
- Сортировка массива методом выбора.
- Delphi - Сортировка массива и вывод его в стринг грид
- Сортировка массива методом Шелла
- Задачка на сортировку массивов
- Сортировка массива (Паскаль) помогите пожалуйста
- Pascal. Сортировка массива.
- Язык СИ. Массивы Ребят, как на Си написать сортировку массива от меньшего к большему?