冒泡排序

https://blog.csdn.net/lu_1079776757/article/details/80459370

冒泡排序:从小到大排序(小的往前排,大的往后排)

方法一:

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

 这个代码很简单,使用双循环的方式进行排序。外部的循环控制所有回合,内部循环代表每一轮的冒泡处理,先进行元素比较,再进行元素交换。那么这个代码该怎么进行优化呢??当排序伏安法分别执行到第六、第七、第八轮的时候,数列的状态其实已经变为有序的了。

在这种情况下,我们就不必要对这几次在重新进行排序,这样就会减少执行的次数,因此,我们可以进行一个优化,就是设置一个flags,如果已经排序了那么设置为0;如果不是有序的,那么设置为1。现在我们来看看优化后的代码。

void BubbleSort(int a[], int len)
{
	int i, j, temp;
	int flags = 0;
	for (j = 0; j < len - 1; j++)
	{
		for (i = 0; i < len - 1 - j; i++)
		{
			if (a[i] > a[i + 1])
			{
				temp = a[i];
				a[i] = a[i + 1];
				a[i + 1] = temp;
				flags = 1;//不是有序的,flags设置为1;
			}
		}
		if (flags == 0)
			return;
	}
}

  

 

上一篇:TF的FLAGS字典获取


下一篇:python学习(十二)python正则表达式