C++: 冒泡排序(Bubble Sort)

news/2025/1/6 6:12:49/

假设你有一列由数字组成的玻璃珠,这些珠子的重量不同,你希望将它们按照重量从轻到重排列。你会这样做:

  1. 从左到右,比较相邻的两颗珠子的重量。
  2. 如果左边的珠子比右边的珠子重,就交换它们的位置。
  3. 然后,继续向右移动,重复这个比较和交换的过程,直到你到达了最右边的珠子。

这个过程就像气泡从底部升到表面一样,较轻的珠子会逐渐“浮”到数组的顶部。这就是为什么这种排序方法被称为冒泡排序。

在计算机领域,冒泡排序的工作方式非常类似。它不断比较相邻的元素,如果它们的顺序不正确,就交换它们的位置。这个过程一直重复,直到没有需要交换的元素为止,排序就完成了。

这里是C++代码示例,演示了冒泡排序的实现过程:

#include <iostream>void bubbleSort(int arr[], int size) {for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - 1 - i; j++) {if (arr[j] > arr[j + 1]) {// 交换相邻元素的位置int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int main() {int myArray[] = {5, 2, 9, 3, 1};int size = sizeof(myArray) / sizeof(myArray[0]);bubbleSort(myArray, size);// 打印排序后的数组for (int i = 0; i < size; i++) {std::cout << myArray[i] << " ";}return 0;
}

冒泡排序的时间复杂度是O(n^2),其中n是数组的大小。这意味着排序时间会随着数组大小的增加而增加,因此在大型数据集上效率较低。然而,对于小型数据集来说,冒泡排序是一个简单而易于理解的排序算法。


http://www.ppmy.cn/news/1124224.html

相关文章

Vuex命名空间及如何获取根模块、兄弟模块状态管理器

模块化思想 import global from ./modules/global; import form from ./modules/form; import formDesign from ./modules/form-design; ...const store new Vuex.Store({state: {},mutations: {},actions: {},strict: true,modules: {global,form,formDesign,...},... } 此时…

Spring核心与设计思想、简单的创建和对象的读取存储

【重点】 1 创建 Spring 项目 a.创建一个maven项目【maven的依赖导入&#xff0c;导一次用终身】 b.添加 spring-config.xml 依赖 【copy一下】 c.创建一个启动类&#xff08;作用&#xff1a;为后续 Spring 容器中获取Bean做准备&#xff09; 2.存储Bean a.创建Bean对象 b.通过…

前端教程-vite

官网 Vite中文网 视频教程 Vite世界指南&#xff08;带你从0到1深入学习 vite&#xff09;

74、SpringBoot 整合 Spring Data JDBC

总结&#xff1a;用起来跟 Spring Data JPA 差不多 什么是 JdbcTemplate&#xff1f;&#xff08;Template译为模板&#xff09; Spring 框架对 JDBC 进行封装&#xff0c;使用 JdbcTemplate 方便实现对数据库操作 ★ Spring Data JDBC 既不需要JPA、Hibernate这种ORM框架&a…

c语言基础知识+OS+数据结构

c语言&#xff1a; memory section&#xff1a; .bss&#xff1a; uninitialized or zero-initialized global and static variables .data: initialized global and static variables .text: Read only, code and const C语言编译流程&#xff1a; pre-compiler: …

Docker ---- network中的命令详解

最近一直在使用docker&#xff0c;记录一些遇到的问题。 问题1&#xff1a;在搭建ealsticsearch与kibana时运行成功后第二次想运行出错了或者访问不了&#xff1f; 因为两个启动的容器是被互相隔离的&#xff0c;没有启用网络的互相通信不了。 问题2&#xff1a;怎么查看自己…

什么是电源的纹波和噪声?

1、本文内容如有错误&#xff0c;欢迎交流指正。 2、本文仅作为本人学习笔记&#xff0c;部分内容来源于网络、书籍&#xff0c;如涉及侵权&#xff0c;请联系删除。 什么是纹波&#xff1f; 纹波是就是电源本身的一种周期性波动。 直流稳定电源一般是由交流电源经整流稳压形成…

vue项目打包部署到服务器,报错。

这个是因为后端部署服务器时&#xff0c;名称没有对上&#xff0c;不是前端的问题&#xff0c;后端配置名称和前端的包名称保持一致就可以了。