有这么个问题,升序输出三个整数。
最直观的方式当然是排序:
排序除了直观之外,还有个优势就是逻辑很明显,容易理解。
现在增加一个要求,就是只能用三目运算符,C语言里的三目运算符就是
<condition>?<true>:<false>
类似函数式编程语言的if then else。
我们可以把问题简化为:
1:找到两个数的大和小两者;
2:扩展到将两个数的大者与另一个数比较得到三个数的大者,求三个数最小
最直观的方式当然是排序:
#include <stdio.h>
void sort(int *arr, int count)
{
int i, j;
for (i = 0; i < count - 1; i++)
for (j = i + 1; j < count; j++)
{
if (arr[i] > arr[j])
{
arr[i] ^= arr[j];
arr[j] ^= arr[i];
arr[i] ^= arr[j];
}
}
}
int main(int argc, char *argv[])
{
int arr[] = {3, 4, 2};
sort(arr, 3);
printf("%d %d %d\n", arr[0], arr[1], arr[2]);
return 0;
}
排序除了直观之外,还有个优势就是逻辑很明显,容易理解。
现在增加一个要求,就是只能用三目运算符,C语言里的三目运算符就是
<condition>?<true>:<false>
类似函数式编程语言的if then else。
我们可以把问题简化为:
1:找到两个数的大和小两者;
2:扩展到将两个数的大者与另一个数比较得到三个数的大者,求三个数最小