Untitled
unknown
c_cpp
3 years ago
1.6 kB
6
Indexable
#include <iostream>
#include <vector>
using namespace std;
void sort_simple_select(vector<int> &a)
{
for (size_t i = 0; i < a.size(); i++)
{
int min_index = i;
for (int j = i; j < a.size(); j++)
{
if (a[j] < a[min_index])
min_index = j;
}
swap(a[min_index], a[i]);
}
}
void sort_cocktail(vector<int>& a)
{
for (size_t i = 0; i < a.size() - i; i++)
{
for (size_t j = i; j < a.size() - i - 1; j++)
{
if (a[j] > a[j + 1])
swap(a[j], a[j + 1]);
}
for (size_t j = a.size() - i - 2; j > i - 1; j--)
{
if (a[j] > a[j + 1])
swap(a[j], a[j + 1]);
}
}
}
void make_heap(vector<int>& a, int root)
{
int largest = root;
int left = 2 * root + 1;
int right = left + 1;
if (left < a.size() && a[left] > a[largest])
largest = left;
if (right < a.size() && a[right] > a[largest])
largest = right;
if (largest != root)
{
swap(a[root], a[largest]);
make_heap(a, largest);
}
}
void sort_heap(vector<int>& a)
{
for (int i = a.size() / 2 - 1; i >= 0; i--)
make_heap(a, i);
for (int i = a.size() - 1; i > 0; i--)
{
swap(a[0], a[i]);
make_heap(a, 0);
}
}
int main()
{
vector<int> arr{ 80, 50, 96, 65, 69, 1, 9, 56, 1, 48, 83, 44, 28, 16, 15 };
// sort_simple_select(arr);
// sort_shake(arr);
sort_heap(arr);
for (auto i : arr)
cout << i << " ";
}Editor is loading...