提示:如果你有麻烦弄清楚上面的程序是如何工作的,它可以有助于通过一张纸上的一个示例案例。写出发(无序)水平在试卷顶端的数组元素。画箭头指示元素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引用你的元素声明在每个循环性能的原因。