冒泡排序

在冒泡排序中,將數組的每個元素與其相鄰元素進行比較,此演算法處理傳遞中的列表。 具有n個元素的列表需要n-1次傳遞以進行排序。 考慮一個n個元素的數組A,其元素將使用冒泡排序進行排序。演算法處理如下。

在第1遍時,A[0]A[1]進行比較,A[1]A[2]進行比較,A[2]A[3]進行比較,依此類推。 在第1遍結束時,列表的最大元素放在列表的最高索引處。

在第2遍時,A[0]A[1]進行比較,A[1]A[2]進行比較,依此類推。 在第2遍結束時,列表的第二大元素位於列表的第二高索引處。
在通過n-1遍時,A[0]A[1]進行比較,A[1]A[2]進行比較,依此類推。 在這個傳球結束時。列表的最小元素放在列表的第一個索引處。

演算法:

第1步 : 重複第2步,從i = 0 到 N-1
第2步 : 重複 J = i + 1 到 N - I
第3步 : IF A[J] > A[i]
        SWAP A[J] 和 A[i]
        [結束內迴圈]
    [結束外迴圈]
第4步 : EXIT

複雜度

情況 複雜度
空間 O(1)
最壞情況運行時間 O(n^2)
平均情況運行時間 O(n)
最好情況運行時間 O(n^2)

C語言實現冒泡排序演算法 -

#include<stdio.h>
void main ()
{
    int i, j,temp;
    int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23};
    for(i = 0; i<10; i++)
    {
        for(j = i+1; j<10; j++)
        {
            if(a[j] > a[i])
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    printf("Printing Sorted Element List ...\n");
    for(i = 0; i<10; i++)
    {
        printf("%d\n",a[i]);
    }
}

執行上面示例代碼,得到以下結果 -

Printing Sorted Element List . . .
7
9
10
12
23
34
34
44
78
101

C++語言實現冒泡排序演算法 -

#include<iostream>
using namespace std;
int main ()
{
    int i, j,temp;
    int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23};
    for(i = 0; i<10; i++)
    {
        for(j = i+1; j<10; j++)
        {
            if(a[j] < a[i])
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    cout <<"Printing Sorted Element List ...\n";
    for(i = 0; i<10; i++)
    {
        cout <<a[i]<<"\n";
    }
    return 0;
}

執行上面示例代碼,得到以下結果 -

Printing Sorted Element List ...
7
9
10
12
23
23
34
44
78
101

Java語言實現冒泡排序演算法 -

public class BubbleSort {
    public static void main(String[] args) {
    int[] a = {10, 9, 7, 101, 23, 44, 12, 78, 34, 23};
    for(int i=0;i<10;i++)
    {
        for (int j=0;j<10;j++)
        {
            if(a[i]<a[j])
            {
                int temp = a[i];
                a[i]=a[j];
                a[j] = temp;
            }
        }
    }
    System.out.println("Printing Sorted List ...");
    for(int i=0;i<10;i++)
    {
        System.out.println(a[i]);
    }
}
}

執行上面示例代碼,得到以下結果 -

Printing Sorted List . . .
7
9
10
12
23
34
34
44
78
101

C#語言實現冒泡排序演算法 -

using System;

public class Program
{
    public static void Main()
    {
        int i, j,temp;
    int[] a = {10, 9, 7, 101, 23, 44, 12, 78, 34, 23};
    for(i = 0; i<10; i++)
    {
        for(j = i+1; j<10; j++)
        {
            if(a[j] > a[i])
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    Console.WriteLine("Printing Sorted Element List ...\n");
    for(i = 0; i<10; i++)
    {
        Console.WriteLine(a[i]);
    }
    }
}

執行上面示例代碼,得到以下結果 -

Printing Sorted Element List . . .
7
9
10
12
23
34
34
44
78
101

Python語言實現冒泡排序演算法 -

a=[10, 9, 7, 101, 23, 44, 12, 78, 34, 23]
for i in range(0,len(a)):
    for j in range(i+1,len(a)):
        if a[j]<a[i]:
            temp = a[j]
            a[j]=a[i]
            a[i]=temp
print("Printing Sorted Element List...")
for i in a:
    print(i)

執行上面示例代碼,得到以下結果 -

Printing Sorted Element List . . .
7
9
10
12
23
34
34
44
78
101

JavaScript語言實現冒泡排序演算法 -

<script>
    var a = [10, 9, 7, 101, 23, 44, 12, 78, 34, 23];
    for(i=0;i<10;i++)
    {
        for (j=0;j<10;j++)
        {
            if(a[i]<a[j])
            {
                 temp = a[i];
                a[i]=a[j];
                a[j] = temp;
            }
        }
    }
    txt = "<br>";
    document.writeln("Printing Sorted Element List ..."+txt);
    for(i=0;i<10;i++)
    {
        document.writeln(a[i]);
        document.writeln(txt);
    }
    </script>

執行上面示例代碼,得到以下結果 -

Printing Sorted Element List ...
7
9
10
12
23
23
34
44
78
101

PHP語言實現冒泡排序演算法 -

<?php
    $a = array(10, 9, 7, 101, 23, 44, 12, 78, 34, 23);
    for($i=0;$i<10;$i++)
    {
        for ($j=0;$j<10;$j++)
        {
            if($a[$i]<$a[$j])
            {
                 $temp = $a[$i];
                $a[$i]=$a[$j];
                $a[$j] = $temp;
            }
        }
    }
    echo "Printing Sorted Element List ...\n";
    for($i=0;$i<10;$i++)
    {
        echo $a[$i];
        echo "\n";
    }
?>

執行上面示例代碼,得到以下結果 -

Printing Sorted Element List ...
7
9
10
12
23
23
34
44
78
101

上一篇: 二進位(二分查找)搜索 下一篇: 桶排序