Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- in divide() cum functioneaza practic? cum de sorteaza in mod recursiv daca atunci cand apelam divide(start,m,v)o sa faca asta pana cand o sa fie cate un element ,apoi o sa ia divide(m+1,ends,v) care o sa faca la fel.La ce se face merge pana la urma?????
- #include<iostream>
- using namespace std;
- void mergev(int start, int ends, int m, int v[100])
- {
- int i=start;
- int j=m+1;
- int k=start;
- int b[100];
- while(i<=m&&j<=ends)
- if(v[i]>v[j])
- b[k++]=v[j++];
- else
- b[k++]=v[i++];
- while(i<=m)
- b[k++]=v[i++];
- while(j<=ends)
- b[k++]=v[j++];
- for(int i=start;i<=ends;i++)
- v[i]=b[i];
- }
- void divide(int start, int ends, int v[100])
- {
- int m;
- //checks if it has only 1 element
- if(start>=ends)
- return;
- else
- {
- m=(start+ends)/2;
- divide(start,m,v);
- divide(m+1,ends,v);
- mergev(start,ends,m,v);
- }
- }
- int main()
- {
- int n, v[100];
- cin>>n;
- for(int i=1;i<=n;i++)
- cin>>v[i];
- cout<<"nesortat:"<<endl;
- for(int i=1;i<=n;i++)
- cout<<v[i]<<" ";
- divide(1,n,v);
- cout<<endl<<"sortat:"<<endl;
- for(int i=1;i<=n;i++)
- cout<<v[i]<<" ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement