冒泡法详解

什么是冒泡法

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

冒泡法思路

  • 冒泡排序就是把小的元素往前调或者把大的元素往后调,比较相邻的元素, 如果第一个比第二个大,就交换他们两个,直到到数组的末尾,每一个数从左到右都进行这样重复的程序,直到最后所有的元素都回到他们本来的位置
    总结:两两想邻元素进行比较,需要时进行交换

例子:假如升序排列一组数字:9 8 7 6 5 4 3 2 1
第一次排序
在这里插入图片描述
剩下待排序的数字
在这里插入图片描述

第二次排序
在这里插入图片描述

剩余待排序数字
在这里插入图片描述
以此类推,最后升序排列
总结:一次冒泡排序复原一个数字,使其回到最终该回到的位置
我们可以看出,10个数字最终需要9次排列,因为第10个数字在第八个数字回到应该位置时也就排列好了
推广:n次冒泡排序需要n-1次排序

代码的实现

升序

#include <stdio.h>
//冒泡排序
void sort(int arr[], int n)
{
	int i = 0;
	int j = 0;
	for (i = 0;i<n-1;i++)
	{
		for (j = 0; j < n-1; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int t = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = t;
			}
		}
	}
}
//打印
void print(int arr[], int n)
{
	int i = 0;
	for (i = 0; i < n; i++)
	{
		printf("%d ", arr[i]);
	}
}
int main()
{
	//从小到大
	int arr[10] = { 0 };
	int i = 0;
	int n = sizeof(arr) / sizeof(arr[0]);//求元素的个数
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}//输入待排序的元素
	sort(arr, n);//冒泡排序
	print(arr, n);//打印
	return 0;
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>