Сортировка Слиянием и Пирамидой! - C#

Узнай цену своей работы

Формулировка задачи:

Привет всем) Вот знаете нигде не нашел кода этих сортировок на C# , можете помочь? оч.нужно.... и срочно(

Решение задачи: «Сортировка Слиянием и Пирамидой!»

textual
Листинг программы
  1. class PyramidSorting {
  2.    //add 1 element to the pyramid
  3.    static int add2pyramid(double[] arr, int i, int N) {
  4.       int imax;
  5.       double buf;
  6.       if((2*i+2) < N) {
  7.          if(arr[2*i+1] < arr[2*i+2]) imax = 2 * i + 2;
  8.          else imax = 2 * i + 1;
  9.       }
  10.       else imax = 2 * i + 1;
  11.       if(imax >= N) return i;
  12.       if(arr[i] < arr[imax]) {
  13.          buf = arr[i];
  14.          arr[i] = arr[imax];
  15.          arr[imax] = buf;
  16.          if(imax < N/2)i = imax;
  17.       }
  18.       return i;
  19.    }
  20.    public static void sorting(double[] arr, int len) {
  21.       //step 1: building the pyramid
  22.       for(int i = len/2 - 1; i >= 0; --i) {
  23.          long prev_i = i;
  24.          i = add2pyramid(arr, i, len);
  25.          if(prev_i != i) ++i;
  26.       }
  27.  
  28.       //step 2: sorting
  29.       double buf;
  30.       for(int k = len-1; k > 0; --k) {
  31.          buf = arr[0];
  32.          arr[0] = arr[k];
  33.          arr[k] = buf;
  34.          int i = 0, prev_i = -1;
  35.          while(i != prev_i) {
  36.             prev_i = i;
  37.             i = add2pyramid(arr, i, k);
  38.          }
  39.       }
  40.    }
  41. }
  42. class Test {
  43.    static void Main(string[] args) {
  44.       double[] arr = new double[100];
  45.  
  46.       //fill the array with random numbers
  47.       Random rd = new Random();
  48.       for(int i = 0; i < arr.Length; ++i) {
  49.          arr[i] = rd.Next(1, 101);
  50.       }
  51.       System.Console.WriteLine("The array before sorting:");
  52.       foreach(double x in arr) {
  53.          System.Console.Write(x + " ");
  54.       }
  55.       PyramidSorting.sorting(arr, arr.Length);
  56.       System.Console.WriteLine("\n\nThe array after sorting:");
  57.       foreach(double x in arr) {
  58.          System.Console.Write(x + " ");
  59.       }
  60.       System.Console.WriteLine("\n\nPress the <Enter> key");
  61.       System.Console.ReadLine();
  62.    }
  63. }
  64. Функция add2pyramid() добавляет один элемент к пирамиде, перестраивая ее таким образом, чтобы не нарушалось правило, согласно которому узел не может быть меньше своих потомков.
  65. Функция sorting() отвечает непосредственно за сортировку.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы