#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;
}
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐