C++编程模版之通用的排序函数

C++编程模版之通用的排序函数
下例来自于《完美C++(第5版)》
---Walter Savitch,Kenrick Mock著
   薛正华,沈庚 韦远科译

1、//main.cpp
#include<iostream>
#include"sort.cpp"

using namespace std;

//排序算法之模版
template<class T>
void sort(T a[], int numberUsed);

//交换两个值之模版
template<class T>
void swapValues(T& variable1, T& variable2);

//数组中求最小值之模版
template<class T>
int indexOfSmallest(const T a[], int startIndex, int numberUsed);

int main()
{
	int i;
	int a[] = {9,8,6,5,4,7,0};
	cout<<"Unsorted integers:\n";
	for( i = 0; i < 7; i++ )
	{
		cout<<a[i]<<" "; 
	}
	cout<<endl;

	sort(a, 7);

	cout<<"In sorted order the integers are:\n";
	for( i = 0; i < 7; i++ )
	{
		cout<<a[i]<<" "; 
	}
	cout<<endl<<endl;

	double b[] = {5.4, 4.3, 6.1, 7.5, 3.4};
	cout<<"Unsorted doubles:\n";
	for( i = 0; i < 5; i++ )
	{
		cout<<b[i]<<" "; 
	}
	cout<<endl;

	sort(b, 5);

	cout<<"In sorted order the doubles are:\n";
	for( i = 0; i < 5; i++ )
	{
		cout<<b[i]<<" "; 
	}
	cout<<endl;


	return 0;
}
2、//sort.cpp
template<class T>
void sort(T a[], int numberUsed)
{
	int indexOfNextSmallest;

	for(int index = 0; index < numberUsed - 1; index++ )
	{
		indexOfNextSmallest = indexOfSmallest(a,index,numberUsed);
		swapValues(a[index],a[indexOfNextSmallest]);
	}
}

template<class T>
void swapValues( T& variable1, T& variable2)
{
	T  temp;
	temp 	  = variable1;
	variable1 = variable2;
	variable2 = temp;
}

template<class T>
int indexOfSmallest(const T a[], int startIndex, int numberUsed)
{
	T min = a[startIndex];
	int indexOfMin = startIndex;

	for ( int index = startIndex + 1; index < numberUsed; index++ )
	{
		if( a[index] < min)
		{
			min = a[index];
			indexOfMin = index;
		}
	}

	return indexOfMin;
}

3、运行结果


发布了15 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/fjqlldg/article/details/52973418