当前位置: 首页 > article >正文

18. 冒泡排序小游戏

文章目录

    • 概要
    • 整体架构流程
    • 技术名词解释
    • 技术细节
    • 小结

1. 概要

Jack Qiao对米粒说:“今天超市门口做活动,让顾客按年龄大小进行排队,你能编写个程序实现吗?。”

☑ 米粒想到:可以逐步调整顺序以达到超市排队的规则,想到用冒泡排序(Bubble Sort法来实现

2. 整体架构流程 

2.1. 头文件

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
☑ 这里对头文件进行复习:
  • #include <stdio.h>:用于标准输入输出函数,如 printf 和 scanf
  • #include <stdlib.h>:用于标准库函数,如 rand 和 srand
  • #include <time.h>:用于时间相关的函数,如 time

2.2. 函数声明

void generateRandomArray(int array[], int size);
void displayArray(const int array[], int size);
void bubbleSort(int array[], int size);
☑ 这里对函数声明进行说明:
  • generateRandomArray:生成一个随机数组。
  • displayArray:显示数组的内容。
  • bubbleSort:使用冒泡排序算法对数组进行排序。

2.3.  主函数

int main() {
    const int SIZE = 10;  // 定义数组大小
    int array[10];  // 明确指定数组大小
    int choice;

    // 初始化随机数种子
    srand(time(NULL));

    // 生成随机数组
    generateRandomArray(array, SIZE);

    printf("欢迎来到冒泡排序小游戏!\n");
    printf("这是您的未排序数组:\n");
    displayArray(array, SIZE);

    printf("请选择操作:\n1. 计算机自动排序\n2. 不排序,直接退出\n");
    scanf("%d", &choice);

    switch (choice) {
    case 1:
        bubbleSort(array, SIZE);
        printf("排序后的数组:\n");
        displayArray(array, SIZE);
        break;
    case 2:
        printf("再见!\n");
        break;
    default:
        printf("无效的选择。\n");
        return 1;
    }

    return 0;
}
☑ 这里对程序一步步进行说明:
  • const int SIZE = 10;:定义一个常量 SIZE,表示数组的大小。
  • int array[10];:定义一个大小为 10 的整数数组。
  • int choice;:定义一个整数变量 choice,用于存储用户的操作选择。
  • srand(time(NULL));:初始化随机数生成器,确保每次运行程序时生成的随机数不同。
  • generateRandomArray(array, SIZE);:调用 generateRandomArray 函数生成随机数组。
  • printf 和 displayArray:显示欢迎信息和未排序的数组。
  • scanf("%d", &choice);:从用户那里获取操作选择。
  • switch (choice):根据用户的选择执行不同的操作:
    • case 1:调用 bubbleSort 函数对数组进行排序,然后显示排序后的数组。
    • case 2:直接退出程序。
    • default:如果用户输入无效的选择,显示错误信息并返回 1

 2.4. 生成随机数组函数generateRandomArray

void generateRandomArray(int array[], int size) {
    for (int i = 0; i < size; ++i) {
        array[i] = rand() % 100; // 生成0到99之间的随机数
    }
}
☑ 这里对程序一步步进行说明:
  • for (int i = 0; i < size; ++i):遍历数组的每个元素。
  • array[i] = rand() % 100;:生成一个 099 之间的随机数并赋值给数组的当前元素。

2.5. 显示数组函数displayArray

void displayArray(const int array[], int size) {
    for (int i = 0; i < size; ++i) {
        printf("%d ", array[i]);
    }
    printf("\n");
}
   2.6. 冒泡排序函数bubbleSort
void bubbleSort(int array[], int size) {
    for (int i = 0; i < size - 1; ++i) {
        for (int j = 0; j < size - 1 - i; ++j) {
            if (array[j] > array[j + 1]) {
                // 交换元素
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}
☑ 这里对程序一步步进行说明:
  • for (int i = 0; i < size - 1; ++i):外层循环控制遍历次数。
  • for (int j = 0; j < size - 1 - i; ++j):内层循环控制每次遍历时的比较和交换操作。
  • if (array[j] > array[j + 1]):如果当前元素大于下一个元素,则交换它们的位置。
  • int temp = array[j];:临时变量 temp 用于交换操作。

2.7. 程序运行结果 

2.8. 所有代码 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 函数原型声明
void generateRandomArray(int array[], int size);
void displayArray(const int array[], int size);
void bubbleSort(int array[], int size);

int main() {
    const int SIZE = 10;  // 定义数组大小
    int array[10];  // 明确指定数组大小
    int choice;

    // 初始化随机数种子
    srand(time(NULL));

    // 生成随机数组
    generateRandomArray(array, SIZE);

    printf("欢迎来到冒泡排序小游戏!\n");
    printf("这是您的未排序数组:\n");
    displayArray(array, SIZE);

    printf("请选择操作:\n1. 计算机自动排序\n2. 不排序,直接退出\n");
    scanf("%d", &choice);

    switch (choice) {
    case 1:
        bubbleSort(array, SIZE);
        printf("排序后的数组:\n");
        displayArray(array, SIZE);
        break;
    case 2:
        printf("再见!\n");
        break;
    default:
        printf("无效的选择。\n");
        return 1;
    }

    return 0;
}

// 生成随机数组
void generateRandomArray(int array[], int size) {
    for (int i = 0; i < size; ++i) {
        array[i] = rand() % 100; // 生成0到99之间的随机数
    }
}

// 显示数组
void displayArray(const int array[], int size) {
    for (int i = 0; i < size; ++i) {
        printf("%d ", array[i]);
    }
    printf("\n");
}

// 冒泡排序函数
void bubbleSort(int array[], int size) {
    for (int i = 0; i < size - 1; ++i) {
        for (int j = 0; j < size - 1 - i; ++j) {
            if (array[j] > array[j + 1]) {
                // 交换元素
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

 3. 技术名词解释

冒泡排序举个栗子
void bubbleSort(int array[], int size) {
    for (int i = 0; i < size - 1; ++i) {
        for (int j = 0; j < size - 1 - i; ++j) {
            if (array[j] > array[j + 1]) {
                // 交换元素
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

 ~ 可以看出:

► 冒泡排序法是一种通过反复交换相邻元素的位置将最大(或最小)的元素逐步移至序列末尾(或开头)的简单排序算法。

4. 小结

► 冒泡排序(Bubble Sort通过多次遍历要排序的列表,逐次比较相邻的元素,并在必要时交换它们的位置,从而将最大(或最小)的元素逐步移动到列表的末尾(或开头),这个过程类似于水中的气泡逐渐上浮


http://www.kler.cn/a/409917.html

相关文章:

  • 第四讲:数据类型与变量:基本数据类型、变量声明与初始化
  • skywalking es查询整理
  • C语言指针作业
  • 机器学习周志华学习笔记-第5章<神经网络>
  • 波点音乐自动点击
  • 整车安全需求考量的多维度深度剖析
  • 人工智能之数学基础:向量的基本知识
  • 企业办公自动化:Spring Boot OA管理系统开发与实践
  • Docker 容器化开发 应用
  • 环境变量简介
  • yolov11的目标检测理论、tensorrt实现推理
  • VScode clangd插件安装
  • ModuleNotFoundError: No module named ‘_ssl‘ centos中的Python报错
  • MaxKB构建本地大语言模型问答系统打造属于你的智能问答应用
  • JavaScript引入和变量
  • Vue 3 异步组件教程
  • 【Docker系列】批量删除特定前缀的镜像 Tag
  • Redis中的zset底层实现
  • Git简单介绍
  • 问题杂谈(三十九)联想thinkPad突然黑屏,开机没反应,只是插电源的时候电源键亮了三下
  • 数据库的联合查询
  • HTML实现 扫雷游戏
  • Rust编程与项目实战-模块std::thread(之二)
  • 文本数据分析(nlp)
  • vue3 + ts:开发插件 / Plugins / 注册全局实例 / 在 template 与 setup 中使用 / provide、inject
  • react后台管理系统(三)