RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
C++实现堆排序
/*堆排序*/

#include 
using namespace std;

void AdjustDown(int* array, size_t size, size_t parent)
{
	size_t child = parent*2 + 1;

	while (child < size)
	{
		if (child+1 < size 
			&& array[child] < array[child+1])
		{
			++child;
		}

		if (array[child] > array[parent])
		{
			swap(array[child], array[parent]);

			parent = child;
			child = parent*2 + 1;
		}
		else
		{
			break;
		}
	}
}

void HeapSort(int* array, size_t size)
{
	//建堆
	for (int i = (size-2)/2; i >= 0; --i)
	{
		AdjustDown(array, size, i);
	}

	//选数据排序
	for (size_t i = 0; i < size; ++i)
	{
		swap(array[0], array[size-i-1]);

		AdjustDown(array, size-i-1, 0);
	}
}

分享题目:C++实现堆排序
本文来源:http://cqwzjz.cn/article/ihjdgj.html