You are on page 1of 4

Aibek Zhazykbek IT3-2002

MERGE SORT
#include <iostream>
#include <string>
using namespace std;
class MergeSort {
private:
int n;
int* array;
public:
MergeSort(int* array, int n) {
this->array = array;
this->n = n;
}

void setSize(int n) {
this->n = n;
}

void setArray(int* array) {


this->array = array;
}

void Merge(int a[], int left, int mid, int right) {


int n1 = mid - left + 1;
int n2 = right - mid;
int* Lt = new int[n1];
int* Rt = new int[n2];

for (int i = 0; i < n1; i++)


Lt[i] = a[left + i];
for (int i = 0; i < n2; i++)
Rt[i] = a[mid + 1 + i];

int i = 0, j = 0, k = left;
while (i < n1 && j < n2) {
if (Lt[i] <= Rt[j])
a[k] = Lt[i++];
else
a[k] = Rt[j++];
k++;
}

while (i < n1)


a[k++] = Lt[i++];
while (j < n2)
a[k++] = Rt[j++];
}

void merge_sort(int a[], int left, int right) {


if (left < right) {
int mid = (left + right) / 2;
merge_sort(a, left, mid);
merge_sort(a, mid + 1, right);
Merge(a, left, mid, right);
}
}

void getArr(int arr[], int n) {


for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
}
};
int main() {
int n;
cin >> n;
int* array = new int[n];
for (int i = 0; i < n; i++) {
cin >> array[i];
}
MergeSort merge1(array, n);
merge1.merge_sort(array, 0, n - 1);

merge1.getArr(array, n);
}

QUICK SORT
#include <iostream>
#include <string>
using namespace std;
class QuickSort {
private:
int n;
int* array;
public:
QuickSort(int* array, int n) {
this->array = array;
this->n = n;
}
void setArr(int* array) {
this->array = array;
}
void setN(int n) {
this->n = n;
}
int partition(int a[], int left, int right) {
int pivot = a[right];
int i = (left - 1);

for (int j = left; j < right; j++) {


if (a[j] < pivot) {
i++;
swap(a[i], a[j]);
}
}
swap(a[i + 1], a[right]);
return i + 1;
}
void quickSort(int a[], int left, int right) {
if (left < right) {
int pi = partition(a, left, right);
quickSort(a, left, pi - 1);
quickSort(a, pi + 1, left);
}
}
int* getArray(int arr[], int n) {
return arr;
}
};
int main() {
int n;
cin >> n;
int* array = new int[n];
for (int i = 0; i < n; i++) {
cin >> array[i];
}
QuickSort quick(array, n);
quick.quickSort(array, 0, n - 1);

int* sorted = quick.getArray(array, n);

for (int i = 0; i < n; i++) {


cout << sorted[i] << " ";
}
}

You might also like