Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void Sort(int tablica[],int pierwszy,int srodek, int ostatni){
- int lewa = pierwszy; // poczatek pierwszej podtablicy //pomocnicz
- int prawa = srodek+1; // poczatek drugiej podtablicy // pomocnicza
- int k = pierwszy; // wskaznik indexu tablicy głównej// pomocnicza
- int pomocnicza[ostatni]; // ustalamy rozmiar pomocniczej tablicy
- for(int i = pierwszy; i <= ostatni; i++) {
- pomocnicza[i] = tablica[i]; // przepisujemy nasze dane do tablicy pomocniczej
- }
- // pętla porównująca elementy i sortowanie
- while(lewa <= srodek && prawa <= ostatni){ // dopóki mamy elementy w naszej tablicy, pętla będzie się wykonywać
- if(pomocnicza[lewa] <= pomocnicza[prawa]){ // porównujemy ze są dwa elementy, jedna z lewej tablicy i jeden z drugiej
- tablica[k] = pomocnicza[lewa]; // jesli lewy jest mniejszy to przepisujemy go w miejsce "k"
- lewa++; // przechodzimy do nastpenego elementu z lewej tablicy
- }else
- {
- tablica[k] = pomocnicza[prawa]; // jesli prawy jest mniejszy to przepisujemy go w miejsce "k"
- prawa++; // przechodzimy do nastpenego elementu z prawej tablicy
- }
- k++; // przechodzimy do nastepenego indeksu naszej talbicy
- }
- // gdy nie sprawdzono wszystkich elementów lewej podtablicy
- while(lewa <= srodek){ // petla działa aż wyczerpiemy wszystkie elementy z lewej tablicy
- tablica[k] = pomocnicza[lewa]; // przypisujemy elementy do naszej tablicy
- lewa++; // przechodzimy do nastepenego elementu
- k++; // przechodzimy do nastepenego indeksu naszej talbicy
- }
- }
- void Merge(int tablica[],int pierwszy,int ostatni){
- int srodkowy = (pierwszy+ostatni) / 2; // wyliczamy środek naszej tablicy
- if(pierwszy < ostatni){ // dopóki lewa strona naszej tablicy, bedzie mniejsza od prawej, dzielimy tablice rekurencyjnie
- Merge(tablica,pierwszy, srodkowy);
- Merge(tablica,srodkowy+1, ostatni);
- }
- Sort(tablica,pierwszy, srodkowy, ostatni); // tutaj nastepuje scalanie naszej tablicy, zgodnie z algorytmem
- }
- int main() {
- int tablica[7] = {1,8,2,58,2,98,56};
- Merge(tablica,0,6); // wywołanie funkcji sortowania
- for(int i = 0; i < 7; i++) {
- printf("%d ", tablica[i]); // wyświetlenie posortowanej tablicy
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement