`
meikebo
  • 浏览: 16045 次
社区版块
存档分类
最新评论

选择排序--堆排序

阅读更多
堆排序算法如下:
public void HeapSort(int[] a, int length)
	{
		int temp;
		int loc=length/2-1;
		for(int i=loc;i>=0;i--)
			AdjustHeap(a,i,length-1);
		for(int j=a.length-1;j>=1;j--)
		{
			temp=a[0];
			a[0]=a[j];
			a[j]=temp;
			AdjustHeap(a,0,j-1);
		}
	}
	public void AdjustHeap(int[] a, int low, int length)
	{
		int key=a[low];
		int i;
		for(i=2*low;i<=length-1;i*=2)
		{
			if(i+2<=length && a[i+2]>=a[i+1])
				i++;
			if(key>a[i+1])
				break;
			a[low]=a[i+1];
			low=i+1;
			i++;
		}
		a[low]=key;
	}

数据结构排序算法总结,C++版,参看地址http://www.cnblogs.com/mingcn/archive/2010/10/17/Sort.html#4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics