冒泡排序的使用

在学习的过程中,把学到的知识写出来一篇博客,可以帮助我们融会贯通,对知识更了解,记忆更深刻。

冒泡排序算是比较简单的一种排序方法,也是我接触的第一个排序算法。

冒泡排序使用的场景

1.冒泡排序作为最简单的排序方法,也有它自己的局限性,那就是只能对整型数组进行排序

比如说:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };//像这样元素类型都是整形的数组。我们这里用这个数组更直观方便的讲解。
	int sz = sizeof(arr) / sizeof(arr[0]);//这里sz计算的是数组中有多少个元素个数,下边要用。
	return 0;
}

冒泡排序的逻辑

1.冒泡排序其实就是两两相邻的数组进行比较,如果说要排升序的话,9和8进行比较9比8大,那么8放在前边,9放在后边,然后再重新比较,如图所示:

2.像这样我们叫做一趟,一趟下来9就被换到了最后边,那我们要进行多少趟呢,这就跟数组中元素个数有关系了,就是我们前边算出来的sz。冒泡排序中如果数组中有十个元素,那么像这样的趟数就有9趟,所以一个数组用冒泡排序,一趟解决一个数字,最终需要(sz-1)趟

冒泡排序代码实现:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//实现一个对整形数组的冒泡排序
int main()
{
	int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };//像这样元素类型都是整形的数组。
	int sz = sizeof(arr) / sizeof(arr[0]);//这里sz计算的是数组中有多少个元素个数,下边要用。
	for (int i = 0; i < sz; i++)//这里是先把没排序之前的数组打印出来,便于观察
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	for (int i = 0; i < sz - 1; i++)//这里就是趟数
	{
		int j = 0;
		int tmp = 0;//创建一个变量,这个变量是为了交换两个数,创建在这里是因为我们每一趟都需要把这个变量初始化,要不然这个变量就会带着上一趟交换过的数字,再交换就不对了。
		for (j = 0; j < sz - 1-i; j++)//这里就是相邻的两个数比较,sz-1-i是因为我们发现第1趟有9对数字比较,第2趟有8对数字比较,这样写更提高效率,当然写成sz-1也可以,每一趟都让9对比较,只不过有的不需要交换。
		{
			if (arr[j] > arr[j + 1])//因为我们要排升序,所以比较之后,前面的数如果大于后边相邻的数,就把前边的数和后边相邻的数交换位置。如果要排降序的话,就把大于号改成小于号就可以了。
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

这就是冒泡排序。 希望对大家有所助益,这是我的荣幸!

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值