|
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,目的就是排序,只要能完成任务,不管用什么算法都可以
|