【摘要】 冒泡排序是一种基础且常见的排序方法。其主要思路为从前到后遍历数组,一边比较一边向后两两交换,将最值冒泡到最后一位。
然而,在遍历过程中,存在还没有遍历完整个数组就已经排序完成的情况。举个例子,如果需要排序的数组是[1,2,6,3],我们希望将其从小到大排序,在第一轮排序完成之后,数组改变为[1,2,3,6],此时已排序完成,应当及时停止,不再进行之后的排序。针对这种情…
冒泡排序是一种基础且常见的排序方法。其主要思路为从前到后遍历数组,一边比较一边向后两两交换,将最值冒泡到最后一位。
然而,在遍历过程中,存在还没有遍历完整个数组就已经排序完成的情况。举个例子,如果需要排序的数组是[1,2,6,3],我们希望将其从小到大排序,在第一轮排序完成之后,数组改变为[1,2,3,6],此时已排序完成,应当及时停止,不再进行之后的排序。针对这种情况,可以使用一个变量记录当前轮次的比较是否有交换发生,若没有,则代表数组已经有序,则停止排序。具体实现代码如下:
void bubble_sort(vector<int>& numset) {
bool f = true;
for (auto i = 0; i < numset.size() - 1; i++) {
if (!f) break;
f = false;
for (auto j = 0; j < numset.size() - 1 - i; j++) { if (numset[j] < numset[j + 1]) { int tem = numset[j]; numset[j] = numset[j + 1]; numset[j + 1] = tem; f = true; }
}
}
}
文章来源: blog.csdn.net,作者:ZhuojunChen,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_39332551/article/details/115788996
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END