数据结构——冒泡排序及优化

冒泡排序:

思路:每一趟都从开始位置从左向右遍历,通过两两比较,如果左边值大于右边值,则交换(换句话说:每趟都可以将排序序列中最大值通过交换的方式,蠕动到最后面)

此时第一趟就把最大的数据已经放到的最后,所以此时最后一个数据就是有序的

代码实现:

cs 复制代码
//冒泡排序
void Bubble_Sort(int arr[], int len) {
	for (int i = 0;i < len - 1;i++) {//控制的是趟数
		for (int j = 0;j < len - i - 1;j++) {//控制的是这一趟中对于待排序序列的从左向右两两取值依次比较的过程
			if (arr[j]>arr[j+1]) {//两两比较,如果左边值大于右边值,就交换
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}

冒泡排序的优化:

标签:bool tag

在每一趟两两比较开始之前,默认置为true

在具体跑的过程中,如果真的出现左边值>右边值,则需要交换,并将tag赋为false;

一趟跑完之后发现tag还是true,则说明数据已经为完全有序了。

cs 复制代码
//冒泡排序的优化
void Bubble_Sort2(int arr[], int len) {
	for (int i = 0;i < len - 1;i++) {//控制的是趟数
		bool tag = true;
		for (int j = 0;j < len - i - 1;j++) {//控制的是这一趟中对于待排序序列的从左向右两两取值依次比较的过程
			if (arr[j] > arr[j + 1]) {//两两比较,如果左边值大于右边值,就交换
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
				tag = false;
			}
			
		}
      if (tag)return;
	}
}
相关推荐
世人万千丶11 分钟前
鸿蒙项目实战 - 社区活动编排板:标签云布局算法与自动换行
学习·算法·华为·harmonyos·鸿蒙
zander25814 分钟前
LeetCode 279. 完全平方数
算法·深度优先
典典分享指南1 小时前
VS Code Git 工作树:解锁多分支并行开发新体验
算法·决策树·逻辑回归·启发式算法
_Narcissus_2 小时前
枚举和模拟算法笔记
c语言·数据结构·c++·笔记·算法·模拟·枚举
天疆说2 小时前
策略的进化:从随心所欲到稳健前行
算法
冻柠檬飞冰走茶2 小时前
《数据结构实验指导-C++语言版》 在顺序表 list 中查找元素 x
开发语言·数据结构·c++·算法·list
Brilliantwxx2 小时前
【C++】 高阶数据结构图(1)并查集
开发语言·数据结构·c++
冻柠檬飞冰走茶2 小时前
《数据结构实验指导-C++语言版》 返回单链表 list 中第 i 个元素值
开发语言·数据结构·c++·算法·list
happyprince3 小时前
03-深刻观-CodeX哲学与升华(源码)
算法·ai编程
不会打球的王子3 小时前
Day 27:迁移学习与微调 — 站在巨人的肩膀上
算法