一维数组——冒泡排序(c++)

冒泡排序(Bubble Sort):

       冒泡排序是一种简单的排序算法:它会重复地遍历要排序的列表,比较每对相邻的元素,并按照大小顺序交换它们。一般而言,这个过程会重复多次,每一轮都会将最大(或最小)的数移动到列表的末尾。由于这个过程像气泡一样逐渐将最大(或最小)的元素“浮”到列表的顶部,因此被称为“ 冒泡排序 ”。

具体的冒泡排序算法如下(以从小到大的顺序为例说明):

(1) 比较列表中相邻的两个元素,如果第一个元素的值比第二个元素的值大,则交换它们二者在数组中的位置;

(2)对每个相邻的元素均执行步骤(1),从列表的第一对元素到最后一对元素;

         经过上述一轮的初步排序之后,最大的元素会“浮到”列表顶部,即最大的元素会移动到列表末尾处;

(3)针对每个元素重复(1)、(2)的步骤,并且每次的比较次数依次“ 减1 ”;

         需要注意的是:最后一个已经排好序的元素不需要再次移动;

(4)重复上述三个步骤,直至所有的元素排序完成。

 以下以数组内的元素排序为例,进行代码(c++)的详细说明:

示例:有一数组arr[10]  = {2,1,5,4,56,33,25,46,89,67},  请将该数组进行升序排列

//冒泡排序
int main()
{
	int arr[10] = { 2,1,5,4,56,33,25,46,89,67 };
	//打印并输出排序前的数组
	cout << "排序前数组:" << endl;

	for (int m = 0; m < 10; m++)
	{
		cout << arr[m] << " ";
	}

	cout << endl;


	//开始冒泡排序
	//外层循环:总共需要排序的总轮数
	for (int i = 0; i < 10 - 1; i++)
	{
		//内层循环:每轮间相邻元素的对比
		for (int j = 0; j < 10 - 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 n = 0; n < 10; n++)
	{
		cout << arr[n] << " ";
	}

	cout << endl;

	system("pause");

	return 0;
}

在上述代码中,需要注意的是———外层循环和内层循环中for语句执行的条件 

即“ 排序总轮数 ”和“ 每轮内比较次数 ”的计算:

(1)排序总轮数 = 数组内总元素个数 - 1

(2)每轮比较次数 = 数组内总元素个数 - 当前的排序轮数 - 1;

       (当前排序轮数从0开始计算)

输出结果

以上即为本人对冒泡排序的一些学习心得,若存在错误,欢迎指正。 

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值