int main()//主函数代码
{
int arr[] = { 3,1,2,3,4,6,44,33,77,66,90,9 };
int sz = sizeof(arr) / sizeof(arr[0]);//元素个数
//过程
//qsort(arr, sz, sizeof(arr[0]), arr_compare);
my_qsort(arr, sz, sizeof(arr[0]), arr_compare);
//显示排序结果
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
//分析 qsort
//qsort 采用的是快速排序
//要传入四个参数
//1.首元素地址 2.元素字节大小 3.单个元素字节大小 4.比较方法
//qsort 需要引用头文件<stdlib.h>
//比较方法
//返回值 1> =0 1<
int arr_compare(const void* e1, const void* e2)
{
return (*((int*)e1))-(*((int*)e2));
}
void my_sort(char* arr1,char* arr2,int width)
{
for (int k = 0; k < width; k++)
{
char tmp = *arr1; //这里的交换要交换元素
*arr1 = *arr2; //因为传进来的是地址,解引用一下后就成了元素
*arr2 = tmp; //char类型占一个字节
arr1++; //在这刚好传经来的是第一个元素开始,和第二个元素开始
arr2++; //将俩个的最小位开始交换就可以将这个元素彻底交换
} //包容性很强
}
void my_qsort(void* arr, int sz, int width, int(*bijiao)(void*, void*))
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{
for (int j = 0; j < sz-1-i; j++)
{
if( arr_compare( (char*)arr+j*width , (char*)arr+(j+1)*width) >0 )
{
//排序
//传进去的是第一个元素开始和第二个元素开始,和元素长度
my_sort( (char*)arr + j * width , (char*)arr + (j + 1) * width, width);
}
}
}
}
初学者学习记录
有不足之处还望大佬指导