P5715 题解

这是洛谷分支结构题单的一题,题面自己去洛谷搜题号吧。
这道题用到了排序算法,由于题目已经限制了abc的数据量大小,最大只到三位数而已,所以就没有必要使用快排堆排这种比较复杂的排序算法了,我们直接使用最简单的冒泡排序。

冒泡排序(C++):

#include <stdio.h>

int sort(int* nums, int quantity)
{
    for (int i = 0; i < quantity-1; i++) {
        // 遍历每一对数
        for (int j = 0; j < quantity-1-i; j++) {
            // 如果前一个数大于后一个数,则互相交换位置
            if(nums[j] > nums[j+1]) {
                // 三变量法交换变量值
                int temp = nums[j];
                nums[j] = nums[j+1];
                nums[j+1] = temp;
            }
        }
    }

    return 0;
}

记得后面要加上return 0;因为没有返回值的话洛谷评测机不会继续运行,会爆TLE(我第一次提交的时候就忘记写返回值了qvq)

全部代码如下(C):

/*
 Author: Kozumi
 Github: @Xuyang1638
 Blog: http://www.cnblogs.com/kozumi/
*/
#include <stdio.h>

int sort(int* nums, int quantity)
{
    for (int i = 0; i < quantity-1; i++) {
        // 遍历每一对数
        for (int j = 0; j < quantity-1-i; j++) {
            // 如果前一个数大于后一个数,则互相交换位置
            if(nums[j] > nums[j+1]) {
                // 三变量法交换变量值
                int temp = nums[j];
                nums[j] = nums[j+1];
                nums[j+1] = temp;
            }
        }
    }

    return 0;
}

int main(void)
{
    // 获取输入
    int num[3];
    // 其实可以用循环,但是懒得写了,直接copy吧
    scanf("%d", &num[0]);
    scanf("%d", &num[1]);
    scanf("%d", &num[2]);
    sort(num, 3);
    printf("%d %d %d
", num[0], num[1], num[2]);

    // 别忘了返回值
    return 0;
}
原文地址:https://www.cnblogs.com/kozumi/p/12863023.html