c++数据结构竞赛 -常见排序(没有归并和快速排序)
·
#include<iostream>
#include<vector>
using namespace std;
void fun1(vector<int>& a)//插入排序
{
if (a.size() == 1)
return;
for (int i = 1; i < a.size(); i++)
{
int key = a[i];
int j = i - 1;
while (j >= 0 and a[j] > key)
{
a[j + 1] = a[j];
j--;
}
a[j + 1] = key;
}
}
void fun2(vector<int> &a)//选择排序
{
for (int i = 0; i < a.size(); i++)
{
int pos = i;
for (int j = i + 1; j < a.size(); j++)
{
if (a[j] < a[pos])
pos = j;
}
swap(a[i], a[pos]);
}
}
void fun3(vector<int>& a)//冒泡排序常规版本
{
for (int i = a.size() - 1; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (a[j] > a[j + 1])
swap(a[j], a[j + 1]);
}
}
}
void fun4(vector<int>& a)//堆排序
{
for (int i = a.size() / 2; i >= 1; i--)
down(i,n);
for (int i = a.size(); i > 1; i--)
{
swap(a[1], a[i]);
down(1, i - 1);
}
}
int main1()
{
vector<int> run;
int n;
cin >> n;
while (n--)
{
int k;
cin >> k;
run.push_back(k);
}
fun4(run);
cout << "排序后:";
for (int e : run)
{
cout << e << " ";
}
return 0;
}更多推荐
所有评论(0)