Описать алгоритм быстрой сортировки (по строчкам) - C#
Формулировка задачи:
using sistem;
namespase Sortirovka_1 // объявление пространства имен
{
class QuickSorting // определение метода
{
public static void sorting(double[] arr, long first, long last) //обращение к методу
{
double p = arr[(last - first)/2 + first];
double temp;
long i = first, j = last;
while(i <= j)
{
while(arr[i] < p && i <= last) ++i;
while(arr[j] > p && j >= first) --j;
if(i <= j)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
++i; --j;
}
}
if(j > first) sorting(arr, first, j);
if(i < last) sorting(arr, i, last);
}
}
}Решение задачи: «Описать алгоритм быстрой сортировки (по строчкам)»
textual
Листинг программы
public static void sorting(double[] arr, long first, long last) //обращение к методу
{
double p = arr[(last - first)/2 + first]; //p - средний элмент в текущем подмассиве
double temp;
long i = first, j = last; //i - индекс первого, j- индекс последнего
while(i <= j) //пока не все элменты раскиданы относительно среднего шагаем по циклу
{
while(arr[i] < p && i <= last) ++i; //пропускаем слева, те что меньше среднего
while(arr[j] > p && j >= first) --j; //пропускаем слева, те что больше среднего
if(i <= j) //если есть не раскиданные элементы - меняем их местами
{
temp = arr[i];
arr[i] = arr[j]; //больший в левую половину подмассива
arr[j] = temp; //меньший в правую
++i; --j; //переходим к следующим элментам
}
}
if(j > first) sorting(arr, first, j); //вызываем сортировку рекурсивно для левого подмассива, если это требуется
if(i < last) sorting(arr, i, last);//вызываем себя рекурсивно для правого подмассива, если это требуется
}
}