9. Сортиране - общи положения; сортиране чрез сравнение

** Класификации на алгоритмите за сортиране [Глава 3, стр.187]

* В зависимост от местонахождението на данните:
 - вътрешно (директен достъп), например бързо сортиране и
 - външно (последователен достъп), например сливане.
* В зависимост от операцията:
 - чрез сравнение (<, > и ==) на двойки елементи и
 - чрез трансформация, напр. сортиране чрез броене.
* Свойство на алгоритъма за сортиране:
 - устойчиви - относителният ред на елементите с равни ключове остава непроменен и
 - неустойчиви - разместване на елементи с равни ключове.
* Ефективност на алгоритмите за сортиране - брой на извършени сравнения и размени (присвоявания).
* Използване на допълнителна памет.

** Дърво на сравненията; сортиране на 3 числа.

** Класически универсални елементарни методи за сортиране чрез сравнение O(n2):
 - пряко вмъкване - намираме елемент, който "не е сортиран" и го поставяме на мястото му в сортираната част;
 - пряка селекция (избор) - намираме най-малкия елемент и го поставяме на мястото му в окончателно сортираната част;
 - мехурчето - последователно се разглеждат двойки елементи и евентуално се разменят.

** Бързо сортиране на Хоор - O(n log2n) средно и O(n2) в най-лошия случай.

** Пирамидално сортиране O(n log2n) и тази оценка не може да се подобри при сортиране чрез сравняване.


Задача 9. МНОГО ПРАВОЪГЪЛНИЦИ
    Дадени са n правоъгълници в равнината със страни, успоредни на координатните оси и с координати на върховете – цели числа. Напишете програма, която намира лицето на сечението на всички правоъгълници и лицето на обединението им.
   
    Вход
    Първото число от стандартния вход задава броя на примерите. Всеки пример се описва с броя на правоъгълниците n - цяло положително число по-малко от 1000 и координатите на горния ляв и долния десен ъгъл на правоъгълника, които са цели числа между -1000 и +1000 включително.

    Изход
    За всеки пример на отделен ред на стандартния изход се извеждат две числа – лицата на сечението и обединението на правоъгълниците.

    ПРИМЕР
Вход
2
2
-10 10 10 -10
0 20 20 0
3
0 1 1 0
-1 0 0 -1
0 0 1 -1
Изход
100 700
0 3