题解 | #输入整型数组和排序标识,对元素按升序或降序排序#

输入整型数组和排序标识,对其元素按照升序或降序进行排序

https://www.nowcoder.com/practice/dd0c6b26c9e541f5b935047ff4156309?tpId=37&tqId=21324&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fdifficulty%3D2%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&difficulty=1&judgeStatus=undefined&tags=&title=

// main只负责处理输入和输出,
// 按升序排序和按降序排序各自单独写一个函数,放在main的外面
#include <stdio.h>
// 按升序排序
void BubbleSortAscend(int* arr, int len) {
    for (int i = 1; i <= len - 1; i++) {
        for (int j = 0; j <= len - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
}
// 按降序排序
void BubbleSortDecend(int* arr, int len) {
    for (int i = 1; i <= len - 1; i++) {
        for (int j = 0; j <= len - 1 - i; j++) {
            if (arr[j] < arr[j + 1]) {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
}
int main() {
    // 读入数组长度
    int n;
    scanf("%d", &n);
    // 读入数组
    int arr[n];
    for (int i = 0; i < n; i++)
        scanf("%d", &arr[i]);
    // 读入升序还是降序
    int DeOrAs;
    scanf("%d", &DeOrAs);
    // 进行排序
    if (DeOrAs == 1)
        BubbleSortDecend(arr, n);
    else
        BubbleSortAscend(arr, n);
    // 排序结束,可以输出
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务