smallestindex跟踪由内环元素的索引

本文详细介绍了两种基本的排序算法——选择排序和冒泡排序的工作原理。包括如何通过内循环和外循环来查找并交换数组中的最小元素,以及如何通过比较和交换相邻元素来实现数组的排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该算法中最令人困惑的部分是另一个循环(称为嵌套循环)的循环。外环(指数)遍历每个元素一个接一个。每一次迭代中的外环、内环(currentindex)是用来在剩下的阵列中找到最小的元素(从startIndex + 1)。smallestindex跟踪由内环发现最小的元素的索引。然后smallestindex是交换的字符。最后,外环(指数)提出的一个元素,和重复的过程。
提示:如果你有麻烦弄清楚上面的程序是如何工作的,它可以有助于通过一张纸上的一个示例案例。写出发(无序)水平在试卷顶端的数组元素。画箭头指示元素startIndex currentindex,和smallestindex索引。手动跟踪程序和重绘箭头作为指标变化。对于每一个外环的迭代,开始一个新的线显示阵列的当前状态。
排序名称使用相同的算法。只需改变数组的类型从int到std::string,并用适当的值初始化。
测验
1)手动显示以下数组中的选择排序方式:{ 30,60,20,50,40,10 }。显示每次发生的交换后的数组。
2)重写选择排序代码以降排序(最大数为第一)。虽然这似乎是复杂的,它实际上是令人惊讶的简单。
3)这将是困难的,所以把你的游戏脸上。
另一个简单的排序被称为“泡沫排序”。通过比较相邻的元素对,对它们进行分类,并将它们交换,如果条件满足,那么元素的“泡沫”到数组的结尾。虽然有相当多的方法来优化的冒泡排序,这个测验我们就坚持用未优化的版本在这里因为它是简单的。
未经优化的冒泡排序执行以下步骤来从最小到最大数组排序:
比较数组元素0与数组元素1。如果元素0更大,用元素1交换它。
B)现在做相同的元素1和2,和每一个后续的元素,直到你击中数组的结束。在这一点上,数组中的最后一个元素将被排序。

c)再次重复前两个步骤,直到数组被排序。

让我们仔细看看这是如何工作的。首先,循环执行,变量号被设置为第一个元素的值,它有价值0。程序执行语句,打印0。然后,循环执行再次,并将数字设置为第二个元素的值,它具有值1。语句再次执行,打印1。for循环继续遍历每个依次编号,执行每一个语句,直到没有元素的数组遍历。在这一点上,循环终止,程序将继续执行(返回0到操作系统)。
请注意,变量数不是一个数组索引。它分配了当前循环迭代的数组元素的值。
对于每一个循环和自动关键字
因为element_declaration应该为同一类型的数组元素,这是一个理想的情况下使用自动关键字,让C++导出我们的数组元素的类型。

这意味着每个重复的数组元素将被复制到变量元素中。复制数组元素可以是昂贵的,大多数的时候,我们真的只是想参考原来的元素。幸运的是,我们可以使用参考资料:

int数组[ 5 ] = { 9,7,5,3,1 };
对(汽车元件阵列)/符使元素的引用到实际的数组元素,防止抄袭了
std::cout <<元<<”;
在上面的示例中,元素将是对当前迭代数组元素的引用,避免了复制的副本。元素的任何变化都会影响到数组的迭代,如果元素是一个正常的变量,则是不可能的。
而且,当然,如果你打算使用它在一个只读的方式使你的元素常量是一个好主意:

int数组[ 5 ] = { 9,7,5,3,1 };
对于(const汽车元件阵列)/元是const引用当前迭代数组元素
std::cout <<元<<”;
规则:使用引用或const引用你的元素声明在每个循环性能的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值