一个大学牲在c++遇到的问题

在这个代码的基础上,加一个要求使其输入的十个整数从小到大排序,怎么改进?各位看官姥爷们🙏

img

在int main前面加上
void sort(int arr[], int n)
{
int i, j, t;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
t = arr[j]; arr[j] = arr[j+1]; arr[j+1]=t;
}
}
}
在main里面return 0;前加上
sort(a, 10);
printf("\n排序后\n");
for (i =0; i < 10; i++) 
printf("%d ", arr[i]);

再for循环外再加一个循环,做冒泡排序;其他地方方法还有二分排序,快速排序等,望采纳

void bubble_sort(int arr[], int len) {
        int i, j, temp;
        for (i = 0; i < len - 1; i++)
                for (j = 0; j < len - 1 - i; j++)
                        if (arr[j] > arr[j + 1]) {
                                temp = arr[j];
                                arr[j] = arr[j + 1];
                                arr[j + 1] = temp;
                        }
}

这个函数放在main之前

        printf("排序后: \n");
        int len = sizeof(a) / sizeof(arr[0]);
        bubble_sort(arr, len);
        int i;
        for (i = 0; i < len; i++)
                printf("%d ", a[i]);

printf("最大值为:..."); 放在这行之前

c++有排序库吧?

【以下回答由 GPT 生成】

在改进上述代码时,可以使用冒泡排序算法对输入的十个整数进行从小到大的排序。以下是改进后的代码:

#include<stdio.h>

void bubbleSort(int a[], int n) {
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-i-1; j++) {
            if (a[j] > a[j+1]) {
                int temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
}

int main() {
    int a[10], i;

    printf("请输入十个数字:");
    for (i = 0; i < 10; i++) {
        scanf("%d", &a[i]);
    }
    printf("\n");

    bubbleSort(a, 10);

    printf("排序后的数字为:");
    for (i = 0; i < 10; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");

    return 0;
}

这段代码中,我们增加了一个名为bubbleSort的函数,用于对传入的数组进行冒泡排序。在主函数中,我们首先接收用户输入的十个整数,然后调用bubbleSort函数对数组进行排序,最后输出排序后的数组。

冒泡排序是一种简单直观的排序算法,它通过重复地交换相邻的元素直至达到排序的目的。在每轮迭代中,比较相邻的两个元素,如果顺序不正确则进行交换。经过一轮迭代后,最大的元素就会“冒泡”到最后一位。重复进行这个过程,直到所有的元素都排好序为止。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^