Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2016, 19:25   #1
Keniro
Пользователь
 
Регистрация: 27.09.2015
Сообщений: 21
По умолчанию Определить сложность алгоритма - C#

Здравствуйте. Помогите пожалуйста. Определить сложность алгоритма в виде О-оценки.
1.
Код:
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();
   }
}

Последний раз редактировалось Keniro; 30.11.2016 в 20:05.
Keniro вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эффективность и сложность исследуемого алгоритма NastyaShuvalova C# (си шарп) 0 12.04.2014 12:11
Сложность алгоритма Маркова iYoung Фриланс 0 31.05.2011 18:30
Определить сложность алгоритма serj-07 Помощь студентам 5 10.08.2010 07:54
сложность алгоритма NiCola999 Помощь студентам 14 22.11.2009 19:33
Сложность Алгоритма PChEL@ Помощь студентам 3 26.05.2007 07:56