Описать алгоритм быстрой сортировки (по строчкам) - 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);//вызываем себя рекурсивно для правого подмассива, если это требуется
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д