C语言如何做到从小到大排序后让前两位相加再排序再让前两位相加重复这个过程直到得出最终结果
时间: 2024-06-08 08:11:04 浏览: 52
可以用冒泡排序实现从小到大排序,然后重复相加前两位并排序的过程可以使用一个循环来实现,直到只剩下一个数为止。以下是一个示例代码:
```c
#include <stdio.h>
void bubble_sort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int len = sizeof(arr) / sizeof(int);
bubble_sort(arr, len);
while (len > 1) {
arr[0] += arr[1]; // 相加前两位
arr[1] = arr[len-1]; // 把最后一个数放到第二个位置
len--; // 数组长度减1
bubble_sort(arr, len); // 再次排序
}
printf("Result: %d\n", arr[0]);
return 0;
}
```
输出结果为:25
解释:先用冒泡排序将数组从小到大排序,得到{1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9}。然后重复相加前两位并排序的过程,得到{2, 2, 3, 3, 4, 5, 5, 5, 6, 9}、{4, 3, 3, 4, 5, 5, 5, 6, 9}、{6, 4, 4, 5, 5, 5, 6, 9}、{10, 5, 5, 5, 5, 6, 9}、{15, 5, 5, 6, 9}、{20, 6, 9}、{26, 9}、{35},最终结果为35。