Сортировка Слиянием и Пирамидой! - C#
Формулировка задачи:
Привет всем) Вот знаете нигде не нашел кода этих сортировок на C# , можете помочь? оч.нужно.... и срочно(
Решение задачи: «Сортировка Слиянием и Пирамидой!»
textual
Листинг программы
class PyramidSorting { //add 1 element to the pyramid static int add2pyramid(double[] arr, int i, int N) { int imax; double buf; if((2*i+2) < N) { if(arr[2*i+1] < arr[2*i+2]) imax = 2 * i + 2; else imax = 2 * i + 1; } else imax = 2 * i + 1; if(imax >= N) return i; if(arr[i] < arr[imax]) { buf = arr[i]; arr[i] = arr[imax]; arr[imax] = buf; if(imax < N/2)i = imax; } return i; } public static void sorting(double[] arr, int len) { //step 1: building the pyramid for(int i = len/2 - 1; i >= 0; --i) { long prev_i = i; i = add2pyramid(arr, i, len); if(prev_i != i) ++i; } //step 2: sorting double buf; for(int k = len-1; k > 0; --k) { buf = arr[0]; arr[0] = arr[k]; arr[k] = buf; int i = 0, prev_i = -1; while(i != prev_i) { prev_i = i; i = add2pyramid(arr, i, k); } } } } class Test { static void Main(string[] args) { double[] arr = new double[100]; //fill the array with random numbers Random rd = new Random(); for(int i = 0; i < arr.Length; ++i) { arr[i] = rd.Next(1, 101); } System.Console.WriteLine("The array before sorting:"); foreach(double x in arr) { System.Console.Write(x + " "); } PyramidSorting.sorting(arr, arr.Length); System.Console.WriteLine("\n\nThe array after sorting:"); foreach(double x in arr) { System.Console.Write(x + " "); } System.Console.WriteLine("\n\nPress the <Enter> key"); System.Console.ReadLine(); } } Функция add2pyramid() добавляет один элемент к пирамиде, перестраивая ее таким образом, чтобы не нарушалось правило, согласно которому узел не может быть меньше своих потомков. Функция sorting() отвечает непосредственно за сортировку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д