#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int cmp(const void* e1, const void* e2)
{
return *(int*)e1 - *(int*)e2;
}
void my_qsort(void* base, size_t num, size_t width, int(*cmp)(const void*, const void*))
{
char* arr = (char*)base;
size_t i = 0;
size_t j = 0;
for (i = 0; i < num - 1; i++)
{
for (j = 0; j < num - 1 - i; j++)
{
if (cmp(arr+j*width, arr+(j+1)*width)>0)
{
char tmp[16] = { 0 };//用来交换的空间
memcpy(tmp, arr + (j + 1) * width, width);
memcpy(arr + (j + 1) * width, arr + j * width, width);
memcpy(arr + j * width, tmp, width);
}
}
}
}
int main()
{
int arr[] = { 10,70,23,23,32,32,31 };
int sz = sizeof(arr) / sizeof(arr[0]);
int wd = sizeof(arr[0]);
my_qsort(arr, sz, wd, cmp);
for (int i = 0; i < sz; i++)
{
printf("%d\t", arr[i]);
}
return 0;
}
11-01
259