对qsort函数的使用理解和冒泡排序的实现

首先是对qsort函数的使用方法的理解和总结

////使用qsort函数排序各种类型的数据
////qsort是一种编译器自带的排序函数
////qsort需要四个参数:
////1.待排序数组的地址(const void* x)
////2.数组大小(size_t xx)
////3.数组中每个元素的大小(size_t xxx)
////4。一个确定排列顺序的函数的指针
////(int (*xxxx)(const void* ,const void*))
//
////xxxx函数是这样的:
//int xxxx (const void* a,const void* b)
//{
//return (要进行比较的数据的数据类型*)a - (要进行比较的数据的数据类型*)b;//排列顺序为升序
//return (要进行比较的数据的数据类型*)b - (要进行比较的数据的数据类型*)a;//排列顺序为降序
////两种选一种就好
//}
//
//int main()
//{
//	//数组
//	int arr[] = {1,3,5,6,2,5,6};
//qsort(arr, sizeof(arr)/sizeof(arr[0]),sizeof(int),xxxx);
////xxxx函数返回内容:return *(int*)a - *(int*)b;
//
//    int arr2[5][5];
//	qsort(arr2,5,sizeof(int)*2,xxxx);
////xxxx函数返回内容:return ((int*)a)[0] - ((int*)b)[0];
//   //字符串
//    qsort(a,lenth,sizeof(a[0]),xxxx);
////xxxx返回:return strcmp(*(char*)a,*(char*)b)
//    //结构体
//	struct node
//	{
//	int a;
//	int b;
//	}n[10];
//	qsort(n,10,sizeof(n[0]),xxxx);
////xxxx返回:return (*(node*)n).a-(*(node*)n).b
//
//return 0;
//}

冒泡排序(以int类型为例子)

void m_qsort(int* dest, int leng)
{
	int i = 0;
int j = 0;
int num = 0;
	assert(dest);
	assert(leng);
for(i=0; i<leng-1; i++)
{
	for(j=i+1; j<leng; j++)
	{
	if(dest[i]>dest[j])
	{
	num = dest[i];
	dest[i] = dest[j];
	dest[j] = num;
	}
	}

}
}

int main()
{
	int i = 0;
	int arr[11] = {2,3,4,5,4,6,3,4,6,3,4};
m_qsort(arr, 11);
for(i=0; i<11; i++)
{
printf("%d", arr[i]);
}
system("pause");
return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43223497/article/details/84634280