heapsort.cpp

来自「常用算法与数据结构原代码」· C++ 代码 · 共 40 行

CPP
40
字号
template <class T>
void Sift(T elem[],int n,int s)
{
	int j;
	T t;
	t=elem[s];
	j=2*s+1;
	while (j<n)
	{
		if (j<n-1 && elem[j]<elem[j+1])
			j++;
		if (t<elem[j])
		{
			elem[s]=elem[j];
			s=j;
			j=2*s+1;
		}
		else 
			break;
	}
	elem[s]=t;
}

template <class T>
void HeapSort(T elem[],int n)
{
	int i;
	T t;
	for (i=n/2-1;i>=0;i--)
		Sift(elem,n,i);
	for (i=n-1;i>=1;i--)
	{
		t=elem[0];
		elem[0]=elem[i];
		elem[i]=t;
		Sift(elem,i,0);
	}

}

⌨️ 快捷键说明

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