Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.cpp
- // Sortowanie Przez Scalanie (Merge Sort)
- //
- // Created by andy on 22.11.2017.
- // Copyright © 2017 andy. All rights reserved.
- //
- #include <cstdio>
- const int wielkosc_tablicy=100;
- int tablica[wielkosc_tablicy+5],n;
- int L[wielkosc_tablicy],P[wielkosc_tablicy]; // tablice pomocnicze przy scalaniu
- int INF=1e9;
- void Merge(int lewy,int srodek,int prawy){ //Scalanie tablicy
- int dl1=srodek-lewy+1;
- int dl2=prawy-srodek;
- for(int i=1;i<=dl1;i++)
- L[i]=tablica[lewy+i-1]; //przepisywanie do 2 tablic pomocniczych
- for(int i=1;i<=dl2;i++)
- P[i]=tablica[i+srodek];
- L[dl1+1]=INF;// straznicy miasta
- P[dl2+1]=INF;
- int i=1,j=1;
- for(int poczatek=lewy;poczatek<=prawy;poczatek++){ // scalanie 2 tablic w jedno
- if(L[i]<=P[j]){
- tablica[poczatek]=L[i];
- i++;
- }
- else {
- tablica[poczatek]=P[j];
- j++;
- }
- }
- }
- void Merge_Sort(int lewy,int prawy){
- if(lewy<prawy){
- int srodek=(lewy+prawy)/2;
- Merge_Sort(lewy,srodek); // dzielenie na tablicy na pol
- Merge_Sort(srodek+1,prawy);
- Merge(lewy,srodek,prawy);
- }
- }
- int main(){
- scanf("%d",&n);
- for(int i=1;i<=n;i++)
- scanf("%d",&tablica[i]);
- Merge_Sort(1,n);
- for(int i=1;i<=n;i++)
- printf("%d ",tablica[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement