Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- //interclasare => O(n) |
- // |=> mergesort => O(n * log(n) )
- //divide et impera => log(n)|
- int a[1000];
- void interclasare(int left,int right)
- {
- int mij = (left + right) / 2;
- int c[right - left + 1],k = 0;
- int i = left,j = mij + 1;
- while(i <= mij && j <= right)
- if(a[i] < a[j])
- c[++k] = a[i++];
- else
- c[++k] = a[j++];
- while(i <= mij)
- c[++k] = a[i++];
- while(j <= right)
- c[++k] = a[j++];
- for(i=left,j = 1;i<=right;i++,j++)
- a[i] = c[j];
- }
- void mergeSort(int left,int right)
- {
- if(left < right)
- {
- int mid = (left + right) / 2;
- mergeSort(left, mid);
- mergeSort(mid + 1, right);
- interclasare(left,right);
- }
- }
- int main()
- {
- int n;
- cin>>n;
- for(int i=1,j = n;i<=n;i++,j--)
- a[i] = j;
- for(int i=1;i<=n;i++)
- cout<<a[i]<<" ";
- cout<<'\n';
- mergeSort(1, n);
- for(int i=1;i<=n;i++)
- cout<<a[i]<<" ";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement