淺析氣泡排序-c++

Stay alone發表於2020-11-21

基本思想

氣泡排序(Bubble Sort)是一種交換排序,它的基本思想是: 兩兩比較相鄰記錄關鍵字,如果反序則交換,直到沒有反序的記錄為止。

氣泡排序演算法

#include <iostream>
using namespace std;

int main()
{
	int a[8]{ 11,2,5,23,6,8,33,12 };
	for (int i = 0; i < 8; i++)
	{
		for (int j = 7; j > i; j--)
		{
			if (a[j] > a[j - 1])
			{
				int tmp = a[j - 1];
				a[j - 1] = a[j];
				a[j] = tmp;
			}
		}
	}

	for (int i = 0; i < 8; i++)
		cout << a[i] << " ";

	system("pause");
    return 0;
}

這種情況氣泡排序的時間複雜度最優和最差都是O(n^2)

氣泡排序優化

#include <iostream>
using namespace std;

int main()
{
	int a[8]{ 11,2,5,23,6,8,33,12 };
	for (int i = 0; i < 8; i++)
	{
		bool bFlag = false;
		for (int j = 7; j > i; j--)
		{
			if (a[j] > a[j - 1])
			{
				int tmp = a[j - 1];
				a[j - 1] = a[j];
				a[j] = tmp;
				bFlag = true;
			}
		}

		if (!bFlag)  
		{
			break;  //無需重新排序
		}
	}

	for (int i = 0; i < 8; i++)
		cout << a[i] << " ";

	system("pause");
    return 0;
}

這種情況氣泡排序的時間複雜度最差是O(n^2),最優情況則是無需重新排序,直接返回

 

相關文章