c语言,不用外加变量,使3个数从小到大排序
时间: 2024-10-08 07:07:35 浏览: 37
在C语言中,可以使用嵌套循环和条件语句(如if...else)实现不使用额外变量的直接交换数组元素的方式来对三个数进行排序。这里提供一种简单的冒泡排序算法示例,它假设这三个数在一个整型数组`arr`中:
```c
#include <stdio.h>
// 冒泡排序函数,用于三数排序
void sortThree(int arr[], int size) {
if (size <= 1) return; // 如果只有一个或没有元素,无需排序
// 第一次遍历比较前两个数
for (int i = 0; i < size - 1; i++) {
if (arr[i] > arr[i + 1]) {
// 交换 arr[i] 和 arr[i+1]
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
// 如果第一次遍历没有完成所有交换,说明剩下的只有一个最大的,返回
if (arr[0] != arr[size - 1]) {
sortThree(arr + 1, size - 1); // 对剩余的两个数再次排序
}
}
int main() {
int numbers[] = {5, 2, 8}; // 三个待排序的数
int n = sizeof(numbers) / sizeof(numbers[0]);
printf("Before sorting:\n");
for (int i = 0; i < n; i++) {
printf("%d ", numbers[i]);
}
sortThree(numbers, n);
printf("\nAfter sorting (in ascending order):\n");
for (int i = 0; i < n; i++) {
printf("%d ", numbers[i]);
}
return 0;
}
```
运行这个程序,你会看到原始数字序列变为已排序的顺序。
阅读全文