Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define FOR(i,a,b) for(i=a;i<=b;i++)
- #define FOD(i,a,b) for(i=a;i>=b;i--)
- int n;
- /*
- █▀▀▄░░░░░░░░░░░▄▀▀█
- ░█░░░▀▄░▄▄▄▄▄░▄▀░░░█
- ░░▀▄░░░▀░░░░░▀░░░▄▀
- ░░░░▌░▄▄░░░▄▄░▐▀▀
- ░░░▐░░█▄░░░▄█░░▌▄▄▀▀▀▀█
- ░░░▌▄▄▀▀░▄░▀▀▄▄▐░░░░░░█
- ▄▀▀▐▀▀░▄▄▄▄▄░▀▀▌▄▄▄░░░█
- █░░░▀▄░█░░░█░▄▀░░░░█▀▀▀
- ░▀▄░░▀░░▀▀▀░░▀░░░▄█▀
- ░░░█░░░░░░░░░░░▄▀▄░▀▄
- ░░░█░░░░░░░░░▄▀█░░█░░█
- ░░░█░░░░░░░░░░░█▄█░░▄▀
- ░░░█░░░░░░░░░░░████▀
- ░░░▀▄▄▀▀▄▄▀▀▄▄▄█▀
- https://codeforces.com/profile/minhson
- */
- bool Greater(int a, int b)
- {
- return (a>b);
- }
- bool Lesser(int a, int b)
- {
- return (a<b);
- }
- void input(int *a, int n)
- {
- int i;
- for(i=0;i<=n-1;i++)
- {
- cout<<"a["<<i<<"]=";
- cin>>*(a+i);
- }
- return;
- }
- void output(int *a, int n)
- {
- int i;
- for(i=0;i<=n-1;i++) cout<<*(a+i)<<" ";
- cout<<endl;
- return;
- }
- void Insert(int *a, int *n)
- {
- int k,val,i;
- cout<<"Moi ban nhap vi tri can chen ";
- cin>>k;
- cout<<"Moi ban nhap gia tri can chen ";
- cin>>val;
- for(i=*n;i>=k-1;i--)
- *(a+i+1)=*(a+i);
- *(a+k-1)=val;
- (*n)++;
- output(a,*n);
- return;
- }
- void del(int *a, int *n)
- {
- int i,k;
- cout<<"Moi ban nhap vi tri can xoa ";
- cin>>k;
- for(i=k-1;i<=(*n)-2;i++)
- *(a+i)=*(a+i+1);
- delete((a+*n-1));
- (*n)--;
- output(a,*n);
- return;
- }
- void SWAP(int *a, int *b)
- {
- int x=*a;
- *a=*b;
- *b=x;
- }
- void Mergesort(int *a, int l, int r ,int *b, bool (*cmp)(int,int))
- {
- int i,j,k,m;
- if (r!=l)
- {
- m=(r+l)/2;
- Mergesort(a,l,m,b,cmp); // chia mảng cần xét thành 2 phần rồi Mergesort từng phần//
- Mergesort(a,m+1,r,b,cmp);
- for(i=m; i>=l;i--) *(b+i)=*(a+i);
- for(j=m+1;j<=r;j++) *(b+r+m+1-j)=*(a+j);
- // sau khi chạy xong 2 vòng for , mảng phụ B sẽ bao gồm 2 phần (l->m) và (m+1->r) , 1 phần tăng, 1 phần giảm
- i++;
- j--;
- //Sau đây là phần Merge, gộp 2 phần của mảng B lại thành Mảng A
- for(k=l;k<=r;k++) //
- if (cmp(*(b+i),*(b+j)))
- {*(a+k)=*(b+i); i++;}
- else
- {*(a+k)=*(b+j); j--;}
- }
- return;
- }
- int LinearSearch(int *a, int n, int val)
- {
- int i;
- for(i=0;i<=n-1;i++)
- if (a[i]==val) { cout<<"a["<<i<<"]="<<*(a+i)<<endl; return 1;}
- cout<<"Khong tim thay gia tri "<<val<<" trong mang"<<endl;
- return 0;
- }
- void update(int *a, int n)
- {
- int k, val;
- cin >> k;
- cin >> val;
- *(a + k) = val;
- output(a,n);
- }
- int main(){
- cout<<"Moi ban nhap so phan tu cua mang: ";
- cin>>n;
- int *a,*b,k,val;
- a=new int [n];
- b=new int [n];
- input(a,n);
- cout<<endl;
- cout<<"Moi ban nhap gia tri can tim ";
- cin>>val;
- cout<<endl;
- LinearSearch(a,n,val);
- cout<<endl;
- cout<<"Mang sau khi sap xep Mergesort ";
- Mergesort(a,0,n-1,b,Lesser);
- output(a,n);
- cout<<endl;
- Insert(a,&n);
- cout<<endl;
- del(a,&n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement