【排序算法】冒泡排序进阶版(C++)

【摘要】 冒泡排序是一种基础且常见的排序方法。其主要思路为从前到后遍历数组,一边比较一边向后两两交换,将最值冒泡到最后一位。
然而,在遍历过程中,存在还没有遍历完整个数组就已经排序完成的情况。举个例子,如果需要排序的数组是[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
喜欢就支持一下吧
点赞0 分享