每日一練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;

 

發佈了11 篇原創文章 · 獲贊 0 · 訪問量 1859
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章