C++排序代码:冒泡排序

/*
冒泡排序:每次两两比较,把大的方后面,直到把最大的排到最后。
区别:冒泡排序右边有序,插入排序左边有序;冒泡排序凉凉比较,插入排序逐一比较
稳定性:稳定排序,每次排序只比较相邻位置,不改变相等元素的位置
时间复杂度:O(n^2)
空间复杂度:O(1)
*/

#include<iostream>
using namespace std;

int main() {

	int a[8] = { 36,25,48,12,25,43,20,28 };  //给定数组
	int len = 8;  //直接给出长度

	//冒泡排序
	int flag;  //判断是否发生交换的标志位
	for (int i = 0; i < len; i++) {
		flag = 0;  //每次初始化为没有发生交换
		for (int j = 0; j < len - i - 1; j++) {
			if (a[j] > a[j + 1]) {
				//swap(a[j], a[j + 1]);  //使用自带的交换函数
				int temp = a[j];  //手写交换函数
				a[j] = a[j + 1];
				a[j + 1] = temp;
				flag = 1;  //发生了交换
			}
		}
		if (flag == 0) {  //如果没有发生交换,说明排序完成,则提前结束
			break;
		}
	}

	//打印输出
	for (int i = 0; i < len - 1; i++) {
		cout << a[i] << " ";
	}
	cout << a[len - 1] << endl;

	return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 12:02
ssob上原来真有BOSS啊
硫蛋蛋:这种也是打工的,只不是是给写字楼房东打工
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务