自定义qsort实现排序2
继续完成自定义qsort代码,实现从大到小的排序
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
void myswap(void *a,void *b,unsigned int size)
{
int i;
char temp;
char* _a = (char*)a;
char* _b = (char*)b;
for(i=0;i<size;i++){
temp = *(_a+i);
*(_a+i) = *(_b+i);
*(_b+i) = temp;
}
}
void pri(int arr[],unsigned int len)
{
int i;
for(i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int cmpfun(const void*a,const void*b)//qsort比较函数
{
const int *local_a = a;
const int *local_b = b;
return -(*local_a-*local_b);
}
void mymaopao(int arr[],unsigned int len,int(*cmp)(const void*,const void*))//使用冒泡法从大到小排列
{
int i,j;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-i-1;j++)
{
if(cmp(&arr[j],&arr[j+1])>0)
{
myswap(&arr[j],&arr[j+1],sizeof(int));
//pri(arr,len);
}
}
}
}
void myjizhi(int arr[],unsigned int len)//使用最大值法从大到小,备用
{
int i,j,max=arr[0];
for(i=0;i<len-1;i++)
{
for(j=i;j<len;j++)
{
if(max<arr[j])
{
max = arr[j];
}
}
arr[i] = max;
max = arr[i+1];
}
}
int main()
{
int arr[5] = {3,1,5,2,4};
mymaopao(arr,5,cmpfun);
return 0;
}
下一步要进行,再次对德才论题目进行代码解算。