欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 数据结构-冒泡排序

数据结构-冒泡排序

2024/10/24 8:30:43 来源:https://blog.csdn.net/W614171629/article/details/140556168  浏览:    关键词:数据结构-冒泡排序

1 概念

冒泡排序属于一种常见的交换排序,根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。具体操作是按顺序(从前往后或从后往前)两两对比元素直至本次排序结束,每次排序确认一个固定值(末位或首位)。需要注意的是,为了排序稳定性,如果遇到相同的元素,对比后不予改动。

2 具体算法

#include <iostream>
#include <vector>
using namespace std;int main()
{vector<int> arr = { 10, 8, 7, 5, 4, 2 };//note 1 从前往后依次两两对比,每次都能确认一个末端最大值//note 2 每次排序完成后,最后一个确定值不参与下次排序//note 3 n个元素对比过程中,只需要比较n-1次//note 4 设置标志位,如果某次排序没有发生交换,说明已经有序,退出循环//第一层循环主要是为了确定还剩余需要遍历的元素个数,可能会提前结束//此处循环-1是因为note3for (int i = 0; i < arr.size() - 1; i++) {bool flag = false;//第二层循环主要是为了依次对比元素大小,每次比较元素总数都较上次少1//此处循环+1是因为size从1开始计数,数组从0开始计数for (int j = 0; j < arr.size() - (i + 1); j++) {//每次从第一个开始,与下一个做对比if (arr[j] > arr[j + 1]) {swap(arr[j], arr[j + 1]);flag = true;}//打印每次对比后的新序列for (int i = 0; i < arr.size(); i++) {cout << arr[i] << " ";}cout << endl;}cout << "complete a bubble sort once!" << endl << endl;if (!flag) {break;}}
}

3 执行结果

4 空间复杂度及时间复杂度

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com