You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将C++中的If Else语句替换为循环实现图书排序?

用循环替代If Else实现图书数量排序

当然可以用循环实现的排序算法来替代原本的If Else逻辑,完成图书按数量升序/降序的需求。新手最容易理解的就是冒泡排序——完全基于循环实现,还能通过简单的条件判断切换升序/降序规则。

下面给你一个完整的示例实现:

1. 先定义图书的结构体

首先我们需要一个结构体来存储图书的科目、名称和数量:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

// 定义图书结构体
struct Book {
    string subject;
    string name;
    int count;
};

2. 用循环实现冒泡排序函数

这里用两层循环实现冒泡排序,通过一个布尔参数isAscending来控制升序还是降序:

// 按图书数量排序的函数,isAscending为true时升序,false时降序
void sortBooksByCount(vector<Book>& books, bool isAscending) {
    int n = books.size();
    // 外层循环:控制排序的轮数
    for (int i = 0; i < n - 1; ++i) {
        // 内层循环:每轮比较相邻元素,把最大/最小的元素"冒"到末尾
        for (int j = 0; j < n - i - 1; ++j) {
            // 根据排序方向判断是否需要交换
            if ((isAscending && books[j].count > books[j+1].count) || 
                (!isAscending && books[j].count < books[j+1].count)) {
                // 交换两个图书对象
                swap(books[j], books[j+1]);
            }
        }
    }
}

3. 测试示例

接下来写一个简单的主函数模拟图书馆系统的流程:

// 打印图书列表的函数
void printBooks(const vector<Book>& books) {
    cout << "\n当前图书列表(带数量):" << endl;
    for (const auto& book : books) {
        cout << "科目:" << book.subject << ",书名:" << book.name << ",数量:" << book.count << endl;
    }
}

int main() {
    // 模拟某一科目的图书数据
    vector<Book> computerBooks = {
        {"计算机", "C++ Primer", 5},
        {"计算机", "Python编程从入门到精通", 12},
        {"计算机", "数据结构与算法分析", 3},
        {"计算机", "操作系统原理", 7}
    };

    cout << "=== 未排序的计算机类图书 ===" << endl;
    printBooks(computerBooks);

    int choice;
    cout << "\n请选择排序方式:1-升序(数量少到多) 2-降序(数量多到少)" << endl;
    cin >> choice;

    // 根据选择调用排序函数,这里的简单判断是处理用户输入,核心排序逻辑已用循环实现
    if (choice == 1) {
        sortBooksByCount(computerBooks, true);
        cout << "\n=== 按数量升序排序后的结果 ===" << endl;
    } else if (choice == 2) {
        sortBooksByCount(computerBooks, false);
        cout << "\n=== 按数量降序排序后的结果 ===" << endl;
    } else {
        cout << "\n无效选择,退出程序" << endl;
        return 0;
    }

    printBooks(computerBooks);

    return 0;
}

关键说明

  • 原本如果是用If Else手动处理排序逻辑(比如逐个判断元素大小),现在完全用两层循环的冒泡排序替代,逻辑更清晰,扩展性更强(比如以后加其他排序规则也方便)。
  • 排序函数里的核心逻辑都是循环:外层循环控制排序轮次,内层循环负责相邻元素的比较和交换,通过isAscending参数切换升序/降序的判断条件。
  • 如果你原本的If Else是用来处理用户排序选择的(比如判断选升序还是降序),那这部分的简单判断是必要的,但排序的核心逻辑已经换成循环实现了——这完全符合你的需求。

内容的提问来源于stack exchange,提问作者Newbies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:55:20