每日一练3.冒泡排序

错误代码

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

		if (exchange == 0)
		{
			return;
		}
	}

	return;

错误地点,第二个for循环,冒泡排序每次都应该从最下面也就是最后一个元素开始,所以j的初始值不能变。

正确代码

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

		if (exchange == 0)
		{
			return;
		}
	}

	return;

 

你可能感兴趣的:(每日一练)