c++函数模板的定义和使用方式

 我来答
LostL
2006-03-31 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:123万
展开全部
给你一个例子吧:
#include <iostream.h>

template <class SomeType>
void Swap (SomeType &a, SomeType &b)
{
SomeType tmp;
tmp = a;
a = b;
b = tmp;
}
template <class SomeType>
void Min(SomeType array[], long size, long start, long ¤tPosition)
{
if( currentPosition - start + 1 < size &&
array[currentPosition] > array[currentPosition + 1]
)
currentPosition = currentPosition + 1;
}

template <class SomeType>
void FilterDown(SomeType array[], long start, long size, long position)
{
long realPosition, relativePosition, offset;
relativePosition = position - start + 1;
offset = 2*relativePosition - 1;
realPosition = start + offset;
while(offset + 1 <= size)
{
Min(array, size, start,realPosition);
if(array[position] > array[realPosition])
Swap(array[realPosition], array[position]);
position = realPosition;
relativePosition = position - start + 1;
offset = 2*relativePosition - 1;
realPosition = start + offset;
}
}

template <class SomeType>
void BuildHeap(SomeType array[], long start, long size)
{
long filterDown;

for(filterDown = size/2 - 1; filterDown >= 0; filterDown --)
FilterDown(array, start, size, start + filterDown);
}

template <class SomeType>
void HeapSort(SomeType array[], long start, long size)
{
BuildHeap(array, start, size);

long numToBeSorted;
for(numToBeSorted = size - 1; numToBeSorted > 0; numToBeSorted --)
{
Swap(array[start], array[start + numToBeSorted]);
FilterDown(array, start, numToBeSorted, start);
}
}

int main()
{
int number;
int a[100], i;
cin >> number;
for(i = 0 ; i < number; i ++)
cin >> a[i];

HeapSort(a, 1, number - 1);

for(i = 0; i < number; i ++)
cout << a[i] << " ";
cout << endl;
return 0;
}

模板写的堆排序。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式