⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 大顶堆排序.cpp

📁 共有10个文件代码
💻 CPP
字号:
#include <iostream.h>
#include <iomanip.h>
void sift(int A[],int n,int m)    //输出以A[m]为根节点的子树为堆
{
	int j,t;
	t=A[m];j=2*(m+1)-1;
	while(j<=n)
	{
		if(j<n && A[j]<A[j+1])   //j指示t的左右子树根节点中的大者
			j++;
		if(t<A[j])
		{
			A[m]=A[j];
			m=j;
			j=2*(m+1)-1;
		}
		else
			j=n+1;
	}
	A[m]=t;
}
void heapsort(int A[],int n)
{
	int i,k,temp;
	k=n/2;
	for(i=k-1;i>=0;i--)
		sift(A,n-1,i);
	for(i=n-1;i>=1;i--)
	{
		temp=A[0];A[0]=A[i];A[i]=temp;
		sift(A,i-1,0);
	}
}
void main()
{
	int A[10],n=10;
	cout<<"请输入要求排序的无序序列(10个数据):";
	for(int i=0;i<n;i++)
		cin>>A[i];
	cout<<"堆排序"<<endl<<"排序前:";
	for(i=0;i<n;i++)
		cout<<setw(3)<<A[i];
	cout<<endl;
	heapsort(A,n);
	cout<<"排序后:";
	for(i=0;i<n;i++)
		cout<<setw(3)<<A[i];
	cout<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -