栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 学习之函数模板案例-排序算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 学习之函数模板案例-排序算法

  • 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序
  • 排序规则从大到小,排序算法为选择排序
  • 分别利用char数组和int数组进行测试
第一版代码
#include
#include
using namespace std;

template//函数模板
void mySort(T arr[], int len)//选择排序算法(降序)
{
	for ( int i = 0; i < len; i++ )
	{
		int max = i;//假定第一个数是最大的
		for ( int j = i + 1; j < len; j++ )//让第一个数去和第二个、第三个、第四个....去比较
		{
			if (arr[max] < arr[j])//从大到小排序
			{
				max = j;//交换下标,一直保持max是最大的数的下标
			}
		}
		if (max != i)//比较完一轮之后,发现最大的数不是i
		{
			//mySwap();//两个数交换,把最大的数放到最前边
			int temp = arr[max];
			arr[max] = arr[i];
			arr[i] = temp;
		}

	 //然后进行第二轮比较,最大的数已经排在第一个了,之后让第二个数去和第三个、第四个...去比较,这样循环下去,直到遍历完整个数组

	}                                                                                                                                                                                              

}

int main()
{	
	int intarry[] = { 1,2,3,4,5,6,7 };
	int intlen = sizeof(intarry) / sizeof(int);//计算数组的长度

	mySort(intarry, intlen);

	for (int i = 0; i < intlen; i++)//遍历输出数组元素
	{
		cout << intarry[i] << ",";
	}
 
	return 0;
}
第二版代码
#include
#include
using namespace std;


template//交换的函数模板
void mySwap(T& a, T& b)
{
	T temp = a;
	a = b;
	b = temp;
}


template//排序的函数模板
void mySort(T arr[], int len)//选择排序算法(降序)
{
	for ( int i = 0; i < len; i++ )
	{
		int max = i;//假定第一个数是最大的
		for ( int j = i + 1; j < len; j++ )//让第一个数去和第二个、第三个、第四个....去比较
		{
			if (arr[max] < arr[j])//从大到小排序
			{
				max = j;//交换下标,一直保持max是最大的数的下标
			}
		}
		if (max != i)//比较完一轮之后,发现最大的数不是i
		{
			mySwap(arr[i],arr[max]);//两个数交换,把最大的数放到最前边
		}

	 //然后进行第二轮比较,最大的数已经排在第一个了,之后让第二个数去和第三个、第四个...去比较,这样循环下去,直到遍历完整个数组

	}                                                                                                                                                                                              

}


template//输出数组元素的函数模板
void printArry(T arr[], int len)
{
	for (int i = 0; i < len; i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;
}


int main()
{
	//整型数组
	int intarry[] = { 1,2,3,4,5,6,7 };
	int intlen = sizeof(intarry) / sizeof(int);//计算数组的长度

	mySort(intarry, intlen);
	printArry(intarry, intlen);


	//字符型数组
	char chararry[] = "abcdef";
	int charlen = sizeof(chararry) / sizeof(char);

	mySort(chararry, charlen);
	printArry(chararry, charlen);

	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/316885.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号