64 lines
1.3 KiB
C++
64 lines
1.3 KiB
C++
#include <iostream>
|
|
|
|
|
|
void m_swap(int* arr, int i_1, int i_2) {
|
|
int tmp = arr[i_1];
|
|
arr[i_1] = arr[i_2];
|
|
arr[i_2] = tmp;
|
|
}
|
|
int fib(int n) { //O(2**n)
|
|
if (n < 2)
|
|
return 1;
|
|
return fib(n - 1) + fib(n - 2);
|
|
}
|
|
|
|
void sort_choice(int arr[], int size) { //n*n
|
|
int i_mn = 0;
|
|
for (int i = 0; i < size; ++i) {
|
|
i_mn = i;
|
|
for (int j = i + 1; j < size; ++j) {
|
|
if (arr[j] < arr[i_mn]) {
|
|
i_mn = j;
|
|
}
|
|
}
|
|
if (i != i_mn)
|
|
m_swap(arr, i, i_mn);
|
|
}
|
|
}
|
|
|
|
|
|
void quickSort(int* arr, int left, int right) //n logN
|
|
{
|
|
int piv;
|
|
int index;
|
|
int _left = left;
|
|
int _right = right;
|
|
piv = arr[left];
|
|
while (left < right)
|
|
{
|
|
while ((arr[right] > piv) && (left < right))
|
|
right--;
|
|
if (left != right)
|
|
{
|
|
arr[left] = arr[right];
|
|
left++;
|
|
}
|
|
while ((arr[left] < piv) && (left < right))
|
|
left++;
|
|
if (left != right)
|
|
{
|
|
arr[right] = arr[left];
|
|
right--;
|
|
}
|
|
}
|
|
arr[left] = piv;
|
|
index = left;
|
|
left = _left;
|
|
right = _right;
|
|
if (left < index)
|
|
quickSort(arr, left, index - 1);
|
|
if (right > index)
|
|
quickSort(arr, index + 1, right);
|
|
}
|
|
|