一、任意类型数据选择排序的基本思想
1.对于单一数据类型选择排序的基本思想在链接中的文章中有清楚的讲解
http://t.csdn.cn/rZkJw
2.对于任意类型数据的选择排序的基本思想:
1)先封装可以实现任意类型数据选择排序的算法代码,数据转换为无类型数据进行排序;
选择排序段实现代码如下:
//任意类型数据选择排序
void selectSort(void* pArray,int elesize,int len,int(*myCompare)(void*,void*))
{
//开辟临时交换元素所用临时变量
char* temp = malloc(elesize);
for (int i = 0; i < len; i++)
{
int MinOrMax = i;//定义最小值或最大值下标
for (int j = i+1; j < len; j++)
{
//数组中每个元素与设定的最小值或最大值下标的元素比较
char* p1 = (char*)pArray + elesize * j;
char* p2 = (char*)pArray + elesize * MinOrMax;
if (myCompare(p1, p2))
{
MinOrMax = j;//更新最小值或最大值下标
}
}
//更新后的最小值或最大值下标与初始设置的下标不同
if (i != MinOrMax)
{
//交换i与MinOrMax下标元素
char* pI = (char*)pArray + elesize * i;
char* p2 = (char*)pArray + elesize * MinOrMax;
//交换元素地址
memcpy(temp, pI, elesize);
memcpy(pI, p2, eles