Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sda-ab:laboratoare:03 [2021/01/12 21:14]
marina.ciocirlan [Laboratorul 03: Algoritmi de cautare si sortare]
sda-ab:laboratoare:03 [2021/03/08 12:46] (current)
andreea.udrea [3. Algoritmi de sortare]
Line 1: Line 1:
-===== Laboratorul ​03: Algoritmi de cautare si sortare =====+===== Laboratorul ​2: Algoritmi de cautare si sortare =====
  
  
Line 14: Line 14:
   * Quick Sort   * Quick Sort
  
 +Cerinta si structura laboratorului se gaseste in **[[https://​github.com/​sda-ab/​lab-02-tasks|acest link.]]**
  
 ====== 2. Introducere ====== ====== 2. Introducere ======
Line 244: Line 245:
 În cazul sortării prin interclasare,​ vectorii care se interclasează sunt două secvenţe ordonate din acelaşi vector. Sortarea prin interclasare utilizează metoda Divide et Impera: se împarte vectorul în secvenţe din ce în ce mai mici, astfel încât fiecare secvenţă să fie ordonată la un moment dat şi interclasată cu o altă secvenţă din vector corespunzătoare. Practic, interclasarea va începe când se ajunge la o secvenţă formată din două elemente. Aceasta, odată ordonată, se va interclasa cu o alta corespunzătoare(cu 2 elemente). Cele două secvenţe vor alcătui un subşir ordonat din vector mai mare(cu 4 elemente) care, la rândul lui, se va interclasa cu un subşir corespunzător(cu 4 elemente) ş.a.m.d. În cazul sortării prin interclasare,​ vectorii care se interclasează sunt două secvenţe ordonate din acelaşi vector. Sortarea prin interclasare utilizează metoda Divide et Impera: se împarte vectorul în secvenţe din ce în ce mai mici, astfel încât fiecare secvenţă să fie ordonată la un moment dat şi interclasată cu o altă secvenţă din vector corespunzătoare. Practic, interclasarea va începe când se ajunge la o secvenţă formată din două elemente. Aceasta, odată ordonată, se va interclasa cu o alta corespunzătoare(cu 2 elemente). Cele două secvenţe vor alcătui un subşir ordonat din vector mai mare(cu 4 elemente) care, la rândul lui, se va interclasa cu un subşir corespunzător(cu 4 elemente) ş.a.m.d.
  
 +
 +Subvectorii sortaţi sunt interclasaţi succesiv, ı̂n ordinea inversă divizarii, obţinând ı̂n final vectorul sortat.
 +Iată un exemplu pentru vectorul [38, 27, 43, 3, 9, 82, 10]:
 +
 +{{ :​sda-ab:​laboratoare:​screenshot_from_2021-01-12_21-59-59.png?​450 |}}
  
 **3.5 Quick sort** **3.5 Quick sort**
Line 257: Line 263:
  
   * alegerea unui element pe post de pivot   * alegerea unui element pe post de pivot
-  * parcurgerea vectorului din două părţi(de la stânga la pivot, de la dreapta la pivot, ambele în acelaşi timp) +  * mutarea ​elementelor ​cu valori mai mici decat pivotul inaintea acestuia si celor mai mari dupa pivot; stabilirea pozitiei finale a pivotului  
-  * interschimbarea ​elementelor ​care se află pe „partea greşită“ ​pivotului(mutăm la dreapta pivotului elementele ​mai mari, la stânga ​pivotului ​elementel mai mici) +  *   ​după ce mutăm elementele pe „partea corectă“ a pivotului, avem 2 subşiruri de sortat, ​pentru fiecare repetam procedura de mai sus.
-  * divizarea algoritmului: ​după ce mutăm elementele pe „partea corectă“ a pivotului, avem 2 subşiruri de sortat, ​iar pivotul se află pe poziţia bună.+
  
  
-====== 4. Exercitii ======+====== 4. Exercitii ​propuse======
 1. Alegeţi un algoritm A(dintre Bubble, Insertion şi Selection) şi un algoritm B(dintre Merge şi Quick). Introduceţi variabile globale cu care să contorizaţi numărul de comparaţii pentru algoritmii A şi B. Comparaţi rezultatele pentru un vector de întregi de lungime n = 20. 1. Alegeţi un algoritm A(dintre Bubble, Insertion şi Selection) şi un algoritm B(dintre Merge şi Quick). Introduceţi variabile globale cu care să contorizaţi numărul de comparaţii pentru algoritmii A şi B. Comparaţi rezultatele pentru un vector de întregi de lungime n = 20.
  
 2. Implementaţi un algoritm(dintre Bubble, Insertion şi Selection) pentru sortarea unui vector cu n cuvinte de maxim 4 litere fiecare. 2. Implementaţi un algoritm(dintre Bubble, Insertion şi Selection) pentru sortarea unui vector cu n cuvinte de maxim 4 litere fiecare.
  
-3. Implementaţi un algoritm(dintre Merge şi Quick) pentru sortarea unui vector de structuri, unde fiecare structură reprezintă un moment de timp(int ​ora,min,sec). +3. Implementaţi un algoritm(dintre Merge şi Quick) pentru sortarea unui vector de cu inregistrari de tip ora_exacta, unde structura ora_exacta are campurile intregi: ​ora, min,sec.
  
 +4. Considerăm un pachet de cărţi. Extragem random n cărţi. Sortaţi aceste cărţi folosind metoda inserţiei.
  
 +5. Scrieţi un program eficient care să afişeze primele k cele mai mari elemente dintr-un vector. Elementele nu
 +sunt ordonate, ci ordinea lor este una aleatoare. De exemplu dat vectorul v = [1, 23, 12, 9, 30, 2, 50], dacă k = 3, vrem cele mai mari 3 elemente care sunt 50, 30, 23
  
sda-ab/laboratoare/03.1610478882.txt.gz · Last modified: 2021/01/12 21:14 by marina.ciocirlan
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0