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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2011, 08:33   #1
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию Сортировка двоичным деревом

Помогите разобраться. Как заставить программу сортировать в порядке убывания
Вот ее код
Код:
#include <iostream.h>
#include <stdlib.h>
#include <vcl.h>
#pragma hdrstop

typedef struct tree
  {
    int a;              // данные
    struct tree *left;  // левый  сын
    struct tree *right; // правый сын
  } TREE;
TREE *add_to_tree(TREE *root, int new_value)
{
   if (root==NULL)  // если нет сыновей - создаем новый элемент
     {
        root = (TREE*)malloc(sizeof(TREE));
        root->a = new_value;
        root->left = root->right = 0;
		return root;
     }
   if (root->a < new_value)          // добавлем ветвь
     root->right = add_to_tree(root->right, new_value);
   else
     root->left  = add_to_tree(root->left,  new_value);
   return root;
}
void tree_to_array(TREE *root, int a[]) // процедура заполнения массива
  {
    static max2=0;                      // счетчик элементов нового массива
    if (root==NULL) return;             // условие окончания - нет сыновей
    tree_to_array(root->left, a);       // обход левого поддерева
    a[max2++] = root->a;
    tree_to_array(root->right, a);      // обход правого поддерева
    free(root);
  }
void sort_tree(int a[], int elem_total)        // собственно сортировка
{
   TREE *root;
   int i;
   root = NULL;
   for (i=0;i<elem_total;i++)
   {
   root = add_to_tree(root, a[i]);
   }
   tree_to_array(root, a);             // заполнение массива
}

void main()
{
   int i;
   int a[19];
   srand(time(0));
   for (i = 0; i < 19; i++)
   {
		a[i] = rand()%300;
		cout << a[i] << '\t';
   }
   sort_tree(a, 19);
   cout << endl;

   
   printf("sorted array:\n");
   for (i=0;i<19;i++) printf("%d ",a[i]);
   cout << endl;
   system("PAUSE");
}
Заранее благодарю
Anubys вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами(двоичным и текстовым) Madara88 Помощь студентам 0 31.03.2011 09:16
Записать двоичным методом строку. Alex Cones Общие вопросы Delphi 9 09.03.2010 08:29
Обращение к двоичным файлам atenon Общие вопросы C/C++ 10 18.12.2009 11:21
Работа с деревом. Gon Паскаль, Turbo Pascal, PascalABC.NET 1 18.01.2009 20:24
Работа с двоичным кодом lacost Общие вопросы Delphi 7 19.11.2008 10:38