C++ 冒泡排序

5.2.3 冒泡排序

作用: 最常用的排序算法,对数组内元素进行排序

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
  3. 重复以上的步骤,每次比较次数-1,直到不需要比较

示例: 将数组 { 4,2,8,0,5,7,1,3,9 } 进行升序排序

#include <iostream>
using namespace std;

int main() {

	// 利用冒泡排序实现升序序列
	int arr[] = { 4,2,8,0,5,7,1,3,9 };

	cout << "冒泡排序前:" << endl;
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;

	// 获取数组的长度
	int size = sizeof(arr) / sizeof(arr[0]); // 9

	// 开始冒泡排序
	// 总共排序轮数为 元素个数 - 1
	for (int i = 0; i < size - 1; i++)
	{
		// 内层循环对比   次数 = 元素个数 - 当前轮数 - 1
		for (int j = 0; j < size - i - 1; j++)
		{
			// 如果第一个数字,比第二个数字大,交换两个数字
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}

	cout << "冒泡排序后:" << endl;
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;


	//// 定义数组
	//int arr[] = { 4,2,8,0,5,7,1,3,9 };
	//// 获取数组的长度
	//int size = sizeof(arr) / sizeof(arr[0]);

	//cout << "冒泡排序前:" << endl;
	//for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	//{
	//	cout << arr[i] << endl;
	//}

	//// 外层循环
	//for (int i = 0; i < size - 1; i++)
	//{
	//	// 内层循环
	//	for (int j = 0; j < size - i - 1; j++)
	//	{
	//		int temp;
	//		if (arr[j] > arr[j + 1])
	//		{
	//			temp = arr[j];
	//			arr[j] = arr[j + 1];
	//			arr[j] = temp;
	//		}
	//	}
	//}

	//cout << "冒泡排序后:" << endl;
	//for (int i = 0; i < size; i++)
	//{
	//	cout << arr[i] << endl;
	//}

	system("pause");

	return 0;
}
posted @ 2021-12-29 14:33  萨塔妮娅  阅读(332)  评论(0)    收藏  举报