|
10鱼币
#include <stdio.h>
int main()
{
int a,b,c,t;
printf("请输入3个数,以逗号分隔:\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a > b)
{
t = a;
a = b;
b = t;
}
if(a > c)
{
t = a;
a = c;
c = t;
}
if(b > c)
{
t = b;
b = c;
c = t;
}
printf("从小到大排列依次是:%d,%d,%d",a,b,c);
return 0;
}
我上面用了qsort这个现成的函数不知道行不行
不过不管是qsort还是现在这个sort,目的就是排序,只要能完成任务,不管用什么算法都可以
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compar(const void *a, const void *b)
{
return *(const int *)a > *(const int *)b;
}
void sort(void *arr, size_t arr_size, size_t elem_size, int (*compar)(const void *a, const void *b))
{
void *buf = malloc(elem_size);
for(size_t i = 0; i < arr_size; ++i)
{
for(size_t j = i + 1; j < arr_size; ++j)
{
void *a = arr + i * elem_size;
void *b = arr + j * elem_size;
if(compar(a, b))
{
memcpy(buf, a, elem_size);
memcpy(a, b, elem_size);
memcpy(b, buf, elem_size);
}
}
}
free(buf);
}
void sort_3(int *a, int *b, int *c)
{
int arr[3] = {*a, *b, *c};
//qsort(arr, 3, sizeof(int), compar);
sort(arr, 3, sizeof(int), compar);
*a = arr[0];
*b = arr[1];
*c = arr[2];
}
int main()
{
int a = 8, b = 2, c = 5;
sort_3(&a, &b, &c);
printf("%d %d %d\n", a, b, c);
return 0;
}
|
最佳答案
查看完整内容
我上面用了qsort这个现成的函数不知道行不行
不过不管是qsort还是现在这个sort,目的就是排序,只要能完成任务,不管用什么算法都可以
|