通用 冒泡排序
1、因老师作业需要经常需要排序导致冒泡排序写了很多遍,一起之下写了个链表和数组 类型无关排序函数 (当然数组直接用C++提供的快速排序之类的也可以)
a、数组通用排序
int SortBubble( void * arry, //要被排序的数组首地址
int n, //数组元素的个数
int ElmentSize , //数组每个元素的大小,即占用字节数
int compare(const void * pia,const void * pib)) //比较函数的指针
{
char * p = (char*)arry; //这一部也是必不可少的,为了后面数组递增
char *pTemp = (char * )malloc(ElmentSize*sizeof(char)); //用于交换的临时变量
int i = 0;
int j = 0;
memset(pTemp,0,ElmentSize*sizeof(char));
for (i=0; i<n-1; i++) //排序的躺数
{
bool bFlag = true;
for (j=0,p=(char*)arry; j<n-i-1; j++)
{
if ( compare(p+j*ElmentSize,p+(j+1)*ElmentSize ) ) //相邻元素比较
{
memcpy (pTemp, (p+j*ElmentSize), ElmentSize); //相似操作 temp = arry[i]
memcpy ((p+j*ElmentSize), p+(j+1)*ElmentSize, ElmentSize); //相似操作 arry[j] = arry[i]
memcpy (p+(j+1)*ElmentSize, pTemp, ElmentSize); //相似操作 arry[i] = temp
}
}
if(bFlag) break; //本次便利没有排序动作发生,已经排好序了,提前退出排序
}
return 0;
}
2、链表排序
先吃饭 待续