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