C++:冒泡排序法

news/2024/5/19 21:14:13 标签: c++, 快速排序

冒泡排序法

  • 1.冒泡排序法的原理
  • 2.代码实现
  • 注意事项

1.冒泡排序法的原理

其原理是依次把数组中相邻两个数比较大小来决定是否换顺序,从而把最大(小)的数字排在最前(后)的方法。

例如:假设一维数组arr[5]={1,4,2,5,0],那么冒泡排序法原理为(其中一种方式):

  1. 1<4,不交换顺序。
  2. 4>2,交换顺序,arr[5]={1,2,4,5,0}.
  3. 4<5,不交换顺序。
  4. 5>0,交换顺序,arr[5]={1,2,4,0,5}.
  5. 最大数字已经排在第5位,下面从第一位开始排序到第四位截止:
  6. 1<2,不交换顺序。
  7. 2<4,不交换顺序。
  8. 4>0,交换顺序,arr[5]={1,2,0,4,5}.
  9. 第二大数字排在第四位,下面从第一位开始排序到第三位截止。。。以此类推,直到循环结束。

2.代码实现

这里使用嵌套循环语句实现上述过程:

#include<iostream>
	using namespace std;
int main()
{
	int arr[5] = { 1,4,2,5,0 }, i, j, s;
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 4-i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				s = arr[j + 1];
				arr[j + 1] = arr[j];
				arr[j] = s;
			}
		}
	}
	for (i = 0; i < 5; i++)
	{
		cout << arr[i] << endl;
	}
	system("pause");
	return 0;
}
  1. 其中第6-17行代码构成冒泡排序法。
  2. 改变数据输入行代码,可以改变数据输入方式。
  3. 改变18-21行代码,可以决定输出的数组是升序排列还是降序排列。

注意事项

注意循环变量下标取值范围,如该代码中j<4-i.如果改成j<5-i,会导致数组下标溢出,如下错误代码:
Run-Time Check Failure #2 - Stack around the variable ‘arr’ was corrupted.


http://www.niftyadmin.cn/n/1437784.html

相关文章

int*p=a,*p=a,*p=a和p=a辨析

目录1.结论2.原因1.结论 int *p &a, 正确写法。*p &a, 错误写法。*p a, 正确写法。p &a, 正确写法。 2.原因 "&“一直都是取地址符&#xff0c;而” * “在1中只是声明变量&#xff0c;在2&#xff0c;3&#xff0c;4中则是取值符&#xff0c;两者含…

CS:GO中的cfg系统

导语 本人写文章的时候&#xff0c;CS:GO游戏时长已经来到了1800小时。这个游戏不仅仅是竞技的快感让我无法自拔&#xff0c;游戏系统与生俱来的“程序员”风格也是让我无法割舍的&#xff08;毕竟是v社的游戏&#xff09;。在遇到CS:GO前&#xff0c;我无法想象一个游戏的控制…

如何利用 webp 进行小程序图片加载速度的优化

导语 最近很长一段时间没有更新博客&#xff0c;一方面是自己最近参与了小程序的开发&#xff0c;另一方面也是自己略有些怠惰&#xff0c;给自己记个过~那么现在既然回到学校那么还是要分享一些知识的。 前一阵子参与微信小程序开发时遇到了一个小问题&#xff0c;就是图片的…

Ubuntu 20.04 与 win10 双系统安装笔记

安装前的认知准备 在安装之前先了解一下基本的安装知识以及需求&#xff0c;以下为我认知中所需要作的准备&#xff1a; 一个 8G 以上的u盘(作为启动盘)Ubuntu 20.04 系统镜像(从Ubuntu官网下载)50G 及以上的磁盘空间 本人电脑型号是 ThinkPad T460s&#xff0c;原操作系统为…

回溯 1008 素数环问题 noj

描述 把1到20这重新排列&#xff0c;使得排列后的序列A满足&#xff1a; a. 任意相邻两个数之和是素数 b. 不存在满足条件a的序列B使得&#xff1a;A和B的前k&#xff08;0 < k < 19&#xff09;项相同且B的第k1项比A的第k1项小。(即按字典序排列的第一项) 输入 没有输…

动态规划 noj 1577 0-1背包问题

描述&#xff1a; 一个背包容量为c &#xff0c;现有n件物品&#xff0c;求能装入背包的最大重量是多少&#xff1f; 输入&#xff1a; 先输入两个正整数n、c&#xff08;0<n、c<1000&#xff09;&#xff0c;表示物品的件数和背包容量&#xff0c; 再输入n个正整数&a…

动态规划 noj 1004 0-1背包问题

描述 需对容量为c 的背包进行装载。从n个物品中选取装入背包的物品&#xff0c;每件物品i的重量为wi &#xff0c;价值为pi。对于可行的背包装载&#xff0c;背包中物品的总重量不能超过背包的容量&#xff0c; 最佳装载是指所装入的物品价值最高。 输入 多个测例&#xff0…

饥荒中的聊天表情(Emoticons In Don‘t Starve Together)

图案对应表 名称(name)代码(ascii)faketeeth&#xf0006;farm&#xf0007;chester&#xf0003;grave&#xf000a;trophy&#xf002d;ghost&#xf0009;flex&#xf0019;heart&#xf000d;battle&#xf0018;alchemy&#xf001d;lightbulb&#xf000f;hambat&#x…