![]() |
1
2
交换算法中有错误:
在指定给之后的行中
请注意,其他操作符也是如此。例如
另外,为什么要使用布尔值来检查数组是否已排序?冒泡排序是一种简单的算法,因此实现起来应该很简单,而且 the definition of an algorithm ,保证完成和正确。如果您试图为性能目的进行优化,例如根据数据是否已排序在合并排序和插入排序之间进行选择,那么我可以理解,但您正在检查数据是否已排序 在你分类的时候 ,这真的没什么意义,因为算法会告诉你什么时候排序,因为它会完成。添加布尔检查只会增加开销,而不会对您造成任何影响。
另外,请注意,在C#实现中,您是如何重复排序过程的。
This is a good sign your design is wrong
。您可以接受一个整数以及实际值
还有,为什么要重复
下面是冒泡排序程序的实现,我想指出一些事情。首先,一般不赞成宣布
我很快还想指出,尽管我们将数组的最大长度声明为宏,但我显式定义的所有数组函数都采用
最后但并非最不重要的一点,我建议不要在程序/函数开始时声明所有变量。这是一个 more contested topic among developers ,尤其是因为它过去是必需的,因为编译器需要确切地知道需要分配哪些变量。随着编译器越来越好,他们可以接受代码中的变量声明(甚至可以完全优化某些变量),因此一些开发人员建议在需要时声明变量,以便他们的声明有意义(即…你知道你需要它们),还可以减少代码噪音。 也就是说,一些开发人员更喜欢在程序/函数的开头声明他们的所有变量。您将特别看到:
或者它的一些变体,因为开发人员预先声明了他们所有的循环计数器。同样,我认为这只是代码噪音,在我看来,当你使用C++时,一些语言语法本身就是代码噪音,但请注意这一点。 例如,与其像这样声明一切:
您可以这样声明变量:
这个
出于教学目的,我还想补充一点,排序整数时不必使用交换变量,因为可以执行以下操作:
然而,我要说的是,我相信临时交换变量会让交换变得更加熟悉,所以我会说把它留在里面,但这是我个人的偏好。
我确实建议使用
这是
要实现冒泡排序算法,现在唯一要做的就是像之前一样初始化随机数生成器,创建数组并填充它,最后对数组进行排序。
我希望这有帮助,如果你有任何问题,请告诉我。 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 4 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 4 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 4 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 4 月前 |