网站首页 > 精选教程 正文
冒泡排序的图示:
假设有一个数组 [5, 3, 8, 6, 2],逐步冒泡排序的过程:
- 第一轮:
- 比较 5 和 3,5 > 3,交换 → [3, 5, 8, 6, 2]
- 比较 5 和 8,5 < 8,不交换 → [3, 5, 8, 6, 2]
- 比较 8 和 6,8 > 6,交换 → [3, 5, 6, 8, 2]
- 比较 8 和 2,8 > 2,交换 → [3, 5, 6, 2, 8] (8 冒泡到最后)
- 第二轮:
- 比较 3 和 5,3 < 5,不交换 → [3, 5, 6, 2, 8]
- 比较 5 和 6,5 < 6,不交换 → [3, 5, 6, 2, 8]
- 比较 6 和 2,6 > 2,交换 → [3, 5, 2, 6, 8] (6 冒泡到倒数第二位)
- 第三轮:
- 比较 3 和 5,3 < 5,不交换 → [3, 5, 2, 6, 8]
- 比较 5 和 2,5 > 2,交换 → [3, 2, 5, 6, 8] (5 冒泡到倒数第三位)
- 第四轮:
- 比较 3 和 2,3 > 2,交换 → [2, 3, 5, 6, 8]
- 结束:
- 数组已经有序,排序完成。
由此可知,5个数总共经历了4轮,而每一轮需要迭代的次数(即元素交换操作)每经过一轮累计减少一次。
所以以轮数为外层循环(总共需要几轮完成),次数为内层循环(代表每轮需要交换操作的次数)。
#include <stdio.h>
void BubbleSort(int* arr,int arrLen);
int main()
{
//一维数组冒泡排序法
int arr[] = { 5, 3, 8, 6, 2 };
int arrLen = sizeof(arr) / sizeof(arr + 1);
BubbleSort(arr,arrLen);
return 0;
}
void BubbleSort(int *arr,int arrLen) {
//冒泡排序过程:
// 比较相邻元素;将数组中最大或最小的元素通过相邻元素之间的比较排到最后
// 重复步骤;
// 循环终止。
for (int i = 0; i < arrLen - 1; i++) //轮数
{
for (int j = 0; j < arrLen - 1 - i; j++)//每轮迭代次数
{
int tmp = 0;
if (arr[j] > arr[j + 1])//元素交换
{
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
//打印结果
for (int i = 0; i < arrLen; i++)
{
printf("%d,", arr[i]);
}
}
- 上一篇: VBA冒泡排序,编程基础必学课
- 下一篇: 用Python写一个冒泡排序代码含注释说明。
猜你喜欢
- 2024-12-05 C语言 第八章 冒泡法排序
- 2024-12-05 Scratch少儿编程,冒泡排序法
- 2024-12-05 冒泡排序从入门到放弃
- 2024-12-05 十大经典排序(2)——冒泡排序
- 2024-12-05 用Python写一个冒泡排序代码含注释说明。
- 2024-12-05 VBA冒泡排序,编程基础必学课
- 2024-12-05 冒泡排序_200 smart
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)