冒泡算法改进

typedef int T;
void bubblesort(T v[], int n)
{
	bool exchange;//交换标志
	int i, j;
	for (i = 1; i < n; i++)
	{
		exchange = false;
		for(int j=n-1;j>=i;j--)
			if (v[j] < v[j - 1])
			{
				int temp = v[j];
				v[j] = v[j - 1];
				v[j - 1] = temp;
				exchange = true;
			}
		if (exchange == false) //如果上一次没有执行交换,则说明元素已经有序,因此不需要再进行比较
			return;    //退出最外层循环
	}
}

改进后的冒泡算法,最好的情况需要n次比较和0次交换操作,而在一般情况和最差情况下,排序算法大约需要 (n^2)/2次比较和交换操作。

点赞