能不能优化上面的代码
时间: 2024-09-25 08:17:18 浏览: 31
当然可以,如果你想进一步优化这段代码,可以考虑使用数组或者结构体存储这三个数,并使用内建的`qsort`或者自定义快速排序等算法对它们进行排序。这里以C语言为例,创建一个结构体表示数值及其索引,因为原始需求不需要显示输入过程,我们只关注排序部分:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h> // 引入时间库用于演示随机排序
// 定义结构体,包含数值和索引
typedef struct {
float num;
int index;
} NumberWithIndex;
void compare(const void* a, const void* b) {
NumberWithIndex* na = (NumberWithIndex*)a;
NumberWithIndex* nb = (NumberWithIndex*)b;
if (na->num < nb->num)
return -1;
else if (na->num > nb->num)
return 1;
else
return 0; // 数值相同时保持原顺序
}
void sortNumbers(float arr[], int n) {
NumberWithIndex numbers[n];
for (int i = 0; i < n; i++) {
numbers[i].num = arr[i];
numbers[i].index = i;
}
qsort(numbers, n, sizeof(NumberWithIndex), compare); // 使用qsort进行排序
// 输出排序后的结果
for (int i = 0; i < n; i++) {
printf("arr[%d] = %.2f, Index: %d\n", numbers[i].index, numbers[i].num, i);
}
}
int main() {
float a[3], temp;
srand(time(0)); // 设置随机种子,使每次运行结果不同
for (int i = 0; i < 3; i++) {
temp = rand() / (float)RAND_MAX; // 随机生成0到1之间的浮点数
a[i] = temp;
}
sortNumbers(a, 3);
return 0;
}
```
这个版本使用了`qsort`函数对数组进行了排序,代码更简洁,也更具通用性和可维护性。
阅读全文