3バブルソート

元の注文に属します。

 

(1)アイデア:

         バブルソートは、大きな要素を後方に調整することです。比較とは、隣接する2つの要素の比較であり、これら2つの要素間でも交換が行われます。元の配列がトラバースされるたびに、最大の要素が最後になります。

 

(2)複雑さの分析:

(2.1)時間計算量:

         最良の場合:正の順序が順序付けられ、n回だけ比較する必要があります。つまり、O(n)です。プログラムはフラグビットを追加する必要があります。1つのトラバーサルが正のシーケンスである場合、それは壊れます。

         最悪の場合:逆順と順序、(n-1)+(n-2)+…+ 1回比較する必要があります、O(n ^ {2})。

         平均的な状況:O(n ^ {2})。

(2.2)スペースの複雑さ:

         O(1)。

 

(3)安定性:

         バブルソートは、大きな要素を後方に調整することです。比較とは、隣接する2つの要素の比較であり、これら2つの要素間でも交換が行われます。したがって、2つの要素が等しい場合、退屈に交換することはないと思います。2つの等しい要素が隣接していない場合、前のペアワイズ交換によって2つの要素が互いに隣接していても、この時点では交換はありません。 、したがって、同じ要素の順序は変更されないため、バブルソートは安定したソートアルゴリズムです。

 

コードセグメント:

void bubble_sort(int arr[],int len)
{
	int tmp;
	for(int i=0;i<len-1;i++)
	{
		for(int j=0;j<len-1-i;j++)
		{
			if(arr[j]>arr[j+1])			//非降序
			{
				tmp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=tmp;
			}
		}
	}
}

 

おすすめ

転載: blog.csdn.net/u012906122/article/details/103592892