Heap Sort

Posted ewitt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Heap Sort相关的知识,希望对你有一定的参考价值。

#include <iostream.h>
#define N 8
int a[]={0,39,21,40,92,29,11,32,9};
void Adjust(int i,int last)
{
	int k=2*i;
	int t=a[i],tag=1;
	while(k<=last&&tag)
	{
		if(k<last&& a[k]>a[k+1]) k++;
		if(t>a[k])
		{
			a[i]=a[k];
            i=k;
			k=2*i;
		}
		else
			tag=0;
	}
	a[i]=t;
}
void disp( int n)
{
	for (int i=0;i<=N;i++)
		cout<<a[i]<<‘\t‘;
	cout<<endl;
}
void HeapSort(int n)
{
	int t;
	for(int i=n/2;i>=1;i--)//build heap;
	{
		Adjust(i,n);
	}

    while(n>1)
	{
		disp(8);
		t=a[1];//交换堆的第一与最后元素
		a[1]=a[n];
		a[n]=t;
	//	disp(8);cout<<n;
        Adjust(1,n-1);//交换后第n个元素就不要考虑了
		cout<<endl;
	
		n--;
	}
 
}

void main()
{
   HeapSort(8);
   disp(8);
}

  

以上是关于Heap Sort的主要内容,如果未能解决你的问题,请参考以下文章

PAT甲级--Insertion or Heap Sort

排序算法:heap sort(含heap介绍,python)

Heap Sort

1098. Insertion or Heap Sort (25)排序——PAT (Advanced Level) Practise

1098. Insertion or Heap Sort (25)排序——PAT (Advanced Level) Practise

python [代码片段]一些有趣的代码#sort