instrucțiuni metodice lucrări de laborator privind disciplina „Programare în înaltă
sortare și căutare algoritmi sunt listate mai jos. In algoritmii de mai sus matrici sunt aranjate în ordine crescătoare. Un exemplu de program, care sortează matrice de „bubble“, este prezentată în figura 2.
Secvențial compara fiecare element de a0 și ai urmat dacă ai<а0, то эти два элемента меняются местами; таким образом наименьший элемент оказывается на своем месте в начале массива. Затем этот метод применяется к элементу а1 и т. д.
În această metodă, o serie de pasaje sunt realizate alternativ de la stânga la dreapta și apoi la dreapta la stânga. compararea Secvențial o pereche de elemente adiacente (A1 și A0, A1 și A2, și așa mai departe. D.) și, dacă este necesar, sunt permutate. indicele stocata de pe ultimul rearanjează elementele (dreapta). Mai mult, matricea este privit de la dreapta la stânga, începând cu indicele dreapta. În această matrice pasaj efectuat, de asemenea, compararea elementelor adiacente și rearanjarea lor. indice de memorat al ultimelor rearanjează element (stânga). Apoi, din nou, de la stânga la dreapta canal de trecere se execută de la stânga la dreapta a indicelui de index și altele. D.
Selectat d intervalul dintre elementele comparate și matricea este sortat de „bubble“, dar cu pasul d. După etapa de sortare matrice la un interval selectat, acest interval este redus din nou și matrice este sortat de „bubble“. Vă recomandăm următoarea secvență de valori d. 1, 3, 7, 15, 31, ..., m. e.
Valoarea maximă a d nu trebuie să depășească lungimea matrice. Astfel, algoritmul compară primul și, dacă este nevoie să fie rearanjate elemente cu care se confruntă în prezent, iar în ultima trecere - vecini.
Quicksort (metoda lui Hoare).
Metoda combinată de sortare rapid metoda „bubble“.
În această metodă, un algoritm recursiv array divizare sortarerapidă este folosit doar pentru subsequences matrice a cărui lungime nu este mai mică decât o anumită dimensiune m (m <=n ). Для сортировки коротких подпоследовательностей используется метод «пузырька».
Elementele de matrice sunt împărțite în secvențe deja ordonate A0, A1, ..., ai-1 și dezordonate ai, ai + 1, ..., an-1. In fiecare trecere de secvențe neordonate extrase elemente ai (în prima trecere, i = 1) și introdus într-o secvență ordonată de elemente, fără a deranja i comanda aceasta. Acest algoritm se repetă pentru i = 2,3, ..., n-1. Ai algoritm de inserție într-o secvență ordonată i elementelor de avans a elementului de inserție la începutul secvenței prin compararea cu ai-1, ai-2 și t. D. Promovarea se termină pe elementul AJ<=ai или при прохождении всей последовательности.
În această metodă, în care elementul ai este comparat cu un element de mijloc al secvenței ordonate, iar apoi procesul de împărțire în două continuă până când, în contrast cu inserția liniară pentru a găsi spațiu pentru a introduce elementul ai într-o secvență ordonată folosind algoritmul binar de căutare, dar nu este găsit macaz.
Algoritmul folosește o matrice de lucru suplimentar. Într-o poziție situată în centrul de lucru al a0 element de matrice este plasat. Acesta va fi mediana. La stânga mediana este necesară pentru a plasa toate elementele de mai jos mediana, precum și dreptul - mai mare sau egală. Din elementul selectat matrice secvențial sortat, este comparat cu mediana și inserat fără a perturba ordonarea stânga sau la dreapta a șirului. În cazul în care zona de memorie alocată pentru una dintre piesele care urmează să fie epuizate, toate elementele de comandă ale șirului sunt deplasate în direcția opusă, iar valoarea mediană este schimbat. La sfârșitul algoritmului produsele comandate să fie copiate în matrice sursă.
Metoda de von Neumann.
Aranja o pereche de elemente de matrice adiacente a (A0 a1, a2 și a3, și așa mai departe. D.) și transferați-le într-o matrice auxiliară b. Apoi ia cele două perechi adiacente de b și le drenează în cvartet ordonat, în scris și din nou; apoi la fiecare două din patru b contopesc în ordonate opt și rescrisă o și t. d. Matricea comandat în matrice trebuie să fie.
Extern în două faze de sortare fuziune directă.
Sortarea externă este utilizată pentru a sorta fișierele, dimensiunile care nu permit să le ardă într-o matrice temporar în memorie. trei fișiere sunt folosite pentru sortare: c (fișierul original), a și b (fișiere de suport). Elementele din fișierul original cu înregistrat alternativ într-o. în imagine b (separarea fazei). Astfel, fiecare fișier creat secvență Singleton. Mai mult, două piese formează o secvență ordonată, în care un element este luat dintr-un. iar cealaltă b (fuziona faza). Aceste secvențe din doua elemente sunt scrise în fișierul. Mai departe, secvențele din doua elemente sunt scrise alternativ într-un. în imagine b (separarea fazei). Apoi, secvența de două elemente de fișiere a si b se contopesc în cvartet ordonate și înregistrate în fișierul (faza îmbinare). Algoritmul partiție de fișiere cu jumătate și formarea de perechi ordonate de secvențe prin fuzionarea secvențe dintr-un fișier și b se repetă atâta timp cât fișierele a și b nu este format dintr-o singură secvență ordonată, care fuzionează în cele din urmă în fișierul sortat.
Sarcina de a realiza versiunea „internă“ a algoritmului pentru a sorta o serie de n elemente.
sortare externă cu o singură fază de fuziune directă.
patru fișiere folosite pentru sortare: c (fișierul original), o, (fișiere de sprijin) b și d. În prima trecere a elementelor fișier sursă alternativ scrise și. în dosarul b. Mai mult, două piese formează o secvență ordonată, în care un element este luat dintr-un. iar cealaltă b. Aceste secvențe din două piese alternativ înregistrate în fișiere și d. Apoi îmbinați perechi de secvențe din doua elemente ale fișierelor c și d în patru ordonate, care sunt înregistrate alternativ în fișiere a și b și t. D. La finalul algoritmului o singură secvență ordonată trebuie să fie într-un fișier.
Sarcina de a realiza versiunea „internă“ a algoritmului pentru a sorta o serie de n elemente.
sortare externă natural îmbinare.
Sortarea, în care fuzioneze cele mai lungi două secvențe ordonate posibile, numită confluența naturală. Algoritmul utilizează fișierul sursă și două fișiere un auxiliar și b. Algoritmul în prima trecere poate fi definit ca un fișier lung comandat de secvență. Mai departe aceste secvențe sunt alternativ înregistrate în fișierele a și b. La fiecare ulterioare trece perechea x secvențe i-comandat un fișier și b (i = 1,2,3, ...) sunt unite într-o secvență lungă ordonate și transferate într-un fișier, după care apare separarea fazelor: fișierele de secvență sunt alternativ înregistrate într-un. La sfârșitul algoritmului o singură secvență ordonată trebuie să fie într-un fișier.
Sarcina de a realiza versiunea „internă“ a algoritmului pentru a sorta o serie de n elemente.
sortare externă fuziune echilibrată.
Algoritmul utilizează fișierul sursă și trei fișiere auxiliară a, b, d. În acest algoritm, pe prima trecere poate fi definit ca porțiuni de fișiere mai ordonate cu. Mai mult, aceste zone sunt alternativ înregistrate în fișierele a și b. În următoarea pereche etapă x secvențe i-comandat un fișier și b (i = 1,2,3, ...) sunt unite într-o secvență lungă comandate și sunt alternativ transferate în fișiere și d. Apoi îmbinați secvențele pereche de fișiere și d și transportate alternativ în fișiere AIB și t. D. La sfârșitul algoritmului o singură secvență ordonată trebuie să fie într-un fișier.
Sarcina de a realiza versiunea „internă“ a algoritmului pentru a sorta o serie de n elemente.
Algoritmul este aplicat la un șir ordonat în care pentru a găsi numărul element cu o valoare dată a lui x. În primul rând, x este comparat cu elementul mediu matrice. Dacă un meci este găsit, returnează indicele elementului de mijloc, altfel determinat, în care jumătate din matrice pe care doriți să căutați prin aplicarea algoritmului de căutare binară.
Algoritmul este aplicat la un șir ordonat în care pentru a găsi numărul element cu o valoare dată a lui x. Dacă se știe că x este între elementele și al AR, numărul următorului element de comparație se calculează cu formula
Dacă un meci este găsit, returnează indicele (m), în caz contrar determinată prin care o parte din matrice pe care doriți să căutați prin aplicarea algoritmului de căutare interpolare.
#include
#include
void sort (int a [], int n)