冒泡排序了解一下

什么是冒泡排序?冒泡排序是一种最基础的交换排序。

大家一定喝过汽水,汽水中常常有许多小小的气泡,哔啦哗啦飘到上面来。这是因为组成气泡的二氧化碳比水要轻,所以小气泡可以一点一点向上浮动。
而我们的冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身的大小,一点一点向着数组的一侧移动。

具体如何移动呢?让我们来看个例子(从小到大的顺序排列)

代码实现:

#include<stdio.h>

void BubbleSort(int arry[],int len)
{
	int temp=0;
	for(int i=0;i<len;i++)
	{
		for(int j=0;j<len-i-1;j++ )
		{
			if(arry[j]>arry[j+1])
				{
				temp=arry[j];
				arry[j]=arry[j+1];
				arry[j+1]=temp;
			}
		}
	}
}

int main()
{
	int arry[]={5,8,6,3,9,2,1,7};
	int len=sizeof(arry)/sizeof(arry[0]);
	BubbleSort(arry,len);
	printf("冒泡排序结果为: ");
	for(int i=0;i<len;i++)
	{
		printf("%d ",arry[i]);
	}
	return 0;
}

代码非常简单,使用双循环来进行排序,外部循环控制所有的回合,内部循环代表每一轮的冒泡处理,先进行元素比较,再进行元素交换。

冒泡排序是稳定排序,由于该排序算法的每一轮要遍历所有元素,轮转的次数和元素数量相当,所以时间复杂度为O(N^2)。

猜你喜欢

转载自blog.csdn.net/weixin_41298329/article/details/81283612
今日推荐