元の注文に属します。
(1)アイデア:
バブルソートは、大きな要素を後方に調整することです。比較とは、隣接する2つの要素の比較であり、これら2つの要素間でも交換が行われます。元の配列がトラバースされるたびに、最大の要素が最後になります。
(2)複雑さの分析:
(2.1)時間計算量:
最良の場合:正の順序が順序付けられ、n回だけ比較する必要があります。つまり、O(n)です。プログラムはフラグビットを追加する必要があります。1つのトラバーサルが正のシーケンスである場合、それは壊れます。
最悪の場合:逆順と順序、(n-1)+(n-2)+…+ 1回比較する必要があります、O()。
平均的な状況:O()。
(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;
}
}
}
}