博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ 冒泡排序 个人笔记
阅读量:3966 次
发布时间:2019-05-24

本文共 1264 字,大约阅读时间需要 4 分钟。

c++ 冒泡排序 个人笔记

为什么冒泡排序?

通过重复地遍历未排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列 已经排序完成。这个算法的名字由来是因为越小或越大的元素会经由交换慢慢得像泡泡一样“浮”到数 列的顶端,故而得名!

冒泡排序的代码实现

源代码

以从小到大int类型的数组排列为例:

#include 
using namespace std;/*****************************函数作用 : 使两个int类型数据进行交换**函数参数 : left - 传入的是一个地址,存储的是待交换的数据* right - 传入的是一个地址,指针变量 存储的是待交换的数据**函数返回值 : 无***************************/void swap(int* left, int* right) { int tmp = 0; tmp = *left; *left = *right; *right = tmp;}/*****************************函数作用 : 使用冒泡排序进行从小到大int 类型的数组排列**函数参数 : arr - 传入的是一个数组的首地址* len - 传入的是数组的总元素个数**函数返回值 : 无***************************/void bubbleSort(int* arr, int len) { //i = 数组最后一个元素下标 每循环一次 i--; for (int i = len - 1; i >= 0; i--) { bool isSwap = false; //检查是否排序完成 //这个循环作用: //j = 0; 每循环一次 j++; //j最大是数组最后一个元素下标-1; //将一个最大的元素放在i这个数组下标中 for (int j = 0; j <= i-1; j++) { //当前元素与它的下一个元素比较 //只有当前元素>它的下一个元素进入 if (arr[j] > arr[j + 1]) { //交换 swap(&arr[j], &arr[j + 1]); isSwap = true; //只要进入一次就说明还没有排序完成 } } //如果已经排序完成直接退出 if (!isSwap) return; }}int main(void) { int arr[] = { 12,3,45,13,45,67,34,14 }; int len = sizeof(arr) / sizeof(arr[0]); bubbleSort(arr, len); for (int i = 0; i < len; i++) { printf("%d\t", arr[i]); } return 0;}

转载地址:http://gfyki.baihongyu.com/

你可能感兴趣的文章
Pandas 精萃
查看>>
[第19课] 二项分布1
查看>>
什么是 Pandas?
查看>>
Pandas 如何创建 DataFrame
查看>>
Pandas 查看数据
查看>>
[第20课] 二项分布2
查看>>
感 冒
查看>>
职业瓶颈
查看>>
有些问题不一定要一次完成,有时候可以增加中间步骤
查看>>
Eclipse 常用快捷键
查看>>
DB2 系列文章目录
查看>>
DB2 认证路线图
查看>>
在FedaroCore4下安装DB2 Express-C
查看>>
DB2 目录结构
查看>>
DB2 配置
查看>>
DB2 CHNGPGS_THRES 参数
查看>>
DB2安全性概述
查看>>
DB2 用户管理
查看>>
DB2 脚本
查看>>
DB2 锁升级失败将引起死锁
查看>>